zoukankan      html  css  js  c++  java
  • 向elasticsearch中动态添加字段报错问题和向elasticsearch中添加嵌套数据类型数据--工作学习记录

    今天在对已有的es库中进行update操作时发现update操作失败(提示说是操作不允许)。然后发现原因是:es中type的“dynamic”属性为“strict”

    然后感觉有两种方法解决:

    1.向type中新增字段,再动态添加

    2.修改es中dynamic属性为true(这种的话改动太大就算了)

    之后我就通过第一种方法进行解决。但是,要添加的数据类型是嵌套数据类型。

    如果就像普通的数据那样进行添加的话,es引擎内部会把对象数组展开成扁平的数据结构,数据之间的依赖关系会丢失。

    例如:"tag":[

                 {

                   "tagname":"测试标签1",

                   "userid":"admin1"

                 }

                {

                  "tagname":"测试标签2",

                  "userid":"admin2"

                 }

           ]

    像这样添加数据后es会解析成  {

                                                       "tag.tagname":["测试标签1","测试标签2"],

                                                       "tag.userid":["admin1","admin2"]

                                                     }

    这样的话admin1添加的标签虽然是"测试标签1",但是经过es这么一解析,我们就不能通过admin1来查出他所添加的标签了。

    为了解决这个问题,在添加该对象数组的时候就把它设置成嵌套类型。具体操作如下:

    PUT /indextest/_mapping/typetest

    {

      "typetest":{

           "properties":{

                 "tag":{

                    "type":"nested",

                     "properties":{

          "userid":{"type": "text"},

          "tagname":{"type": "text"}

                      }

                 }

             }

       }

    }

  • 相关阅读:
    【求助】Oracle 新手困惑,System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
    什么是APS高级计划排程(高级计划排产)一
    【求助】Html弄的比较少,问一个弱弱的问题,为什么下面代码在IE中tr之间有空白行,而在Firefox中没有空白
    使用Jmeter测试快速入门
    Jmeter数据库压测(Windows下进行压测)
    Charles安装真机证书
    Jmeter组件参数化
    Jmeter脚本录制(App)
    Jmeter的介绍
    Fiddler的使用
  • 原文地址:https://www.cnblogs.com/olzoooo/p/11425578.html
Copyright © 2011-2022 走看看