向elasticsearch中动态添加字段报错问题和向elasticsearch中添加嵌套数据类型数据--工作学习记录

摘要:
今天,我发现更新现有es库时更新操作失败。原因是es中类型的“dynamic”属性是“strict”。然后我觉得有两种方法可以解决这个问题:1.向类型中添加新字段,然后动态添加它们。2.在es中的动态属性修改为true后,我使用第一种方法来解决这个问题。如果将数据作为普通数据添加,es引擎将将对象数组扩展为平面数据结构,数据之间的依赖关系将丢失。

今天在对已有的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"}

                  }

             }

         }

   }

}

免责声明:文章转载自《向elasticsearch中动态添加字段报错问题和向elasticsearch中添加嵌套数据类型数据--工作学习记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Error hnk2005:exist already defined in msvcrt.lib(MSVCR100.dll)_LIBCMTD.lib 解决方案SqlAlchemy下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从零搭建 ES 搜索服务(二)基础搜索

一、前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码。 二、安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://github.com/medcl/elasticsearch-analysis-ik 提供两种分词模式:「 ik_max_word 」及「 ik_smart 」...

ElasticSearch的基本原理与用法

一、简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式支持需要ZooKeeper的支持。 这里有一个详细的ElasticSearch和Solr的对比:http://solr-vs-elasticsearch.co...

JVM 的 Xms 和 Xmx 设置一样大小的内存容量

4. 【推荐】在线上生产环境,JVM 的 Xms 和 Xmx 设置一样大小的内存容量,避免在 GC 后调整堆 大小带来的压力。 现在,我们知道了Elasticsearch所公开的缓存和缓冲区,可以尝试结合这些知识来配置一个高索引和查询吞吐量的集群。接下来的两个小节将讨论在设置集群时,什么可以在默认配置中更改,什么是要注意的。在讨论Elasticsearch...

【推荐】开源项目ElasticAmbari助力 ElasticSearch、Kibana、ambari服务高效运维管理

此文转载自:https://zyc88.blog.csdn.net/article/details/112007608 概述 ElasticAmbari为Ambari的一组自定义服务,为Elastic的产品提供安装和管理的支持。 项目地址: https://github.com/ChengYingOpenSource/ElasticAmbari 开源不易...

Elasticsearch与MySQL对应关系表

MySQL 中的数据库(DataBase),等价于 ES 中的索引(Index)。 MySQL 中一个数据库下面有 N 张表(Table),等价于1个索引 Index 下面有 N 多类型(Type)。 MySQL 中一个数据库表(Table)下的数据由多行(Row)多列(column,属性)组成,等价于1个 Type 由多个文档(Document)和多...

ELK elasticsearch7 设置账号、权限

比较完整一篇,完整版 我们直接安装的ELK默认是没有账号与密码的。但是我们一旦放到生成上,就需要做一定的权限过滤,有些数据有些账号才能看到。否则都能看到,就很不科学了,有可能导致一些有心的人,搞成信息泄露。这个时候我们就需要设置账号密码了。 用户信息设置在LK中,也就是logstash、kibana中是没有的,因为他们的信息数据都是来源于elasticse...