向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"}

}

}

}

}

}

原文地址:https://www.cnblogs.com/olzoooo/p/11425578.html

时间: 2024-10-12 08:42:02

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

log4j的1.2.15版本,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:jar:1.1 from https://maven-repository.dev.java.net/nonav/repository......

在动态网站工程中,添加了Pom依赖,当添加log4j的1.2.15版本依赖时,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:jar:1.1 from https://maven-repository.dev.java.net/nonav/repository......,如下图 这是因为 https://maven-repository.dev.java.net/nonav/repository 这个域名已经无法解析了. 而

Mybatis Plus 更新时间 updateTime字段报错 Could not set property 'updateTime'

背景 遇到这个问题折腾好几个小时,差点被逼疯.记录一下. 先说下环境,MySQL数据库,表中字段名为update_time,类型为datetime.Java实体类中对应的变量是java.util.Date类型的updateTime. 环境交代完毕,使用update语句更新记录的时候,一直报错,说类型不匹配.贴上报错信息: 1 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.refle

Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: '' for column 'createtime'

今天部署服务器项目运行,当遇见有时间数据对象的插入和更新操作的时候,就报错,如下: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.My

mysql 插入中文字段报错 "Incorrect string value: '\\xE6\\xB5\\x8B\\xE8\\xAF\\x95...' for column 'title' at row 1"

1. 查看一个 database 或一个 table 的编码show create database mytestdb;show create table testapp_article; mysql> show create table testapp_article;+-----------------+-----------------------------------------------------------------------------------------------

Android工程中加入图片,报错cannot be resolved or is not a field

SDK和ADT为22.6.2版本 工程为4.4.2 今天在写Android代码的时候,往工程中加入了几张图片,然后在代码中使用R.drawable调用时,一直报错 cannot be resolved or is not a field 然后我查看了gen目录下的R.java文件,发现里面已经有我加入的图片资源ID了,觉得很奇怪,一般是无法生成R.java文件的时候才会出现这种现象啊 在网上查了资料也未见有可以解决我这个问题的方法,然后我就把我的代码从头到尾重新看了一遍,开始也没有发现什么异常,

jsp页面中onsubmit="return checklogin();"报错解决办法

选择Window->Preferences->MyEclipse->Validation 去掉方框里的对号,然后Apply 然后点击Yes->然后再点击ok->Yes,就好了,如果你打开了那个出现错误jsp页面的话,请关掉重现打开就ok啦 jsp页面中onsubmit="return checklogin();"报错解决办法,布布扣,bubuko.com

android URL中文和空格会报错解决方案

url = URLEncoder.encode(urlStr,"utf-8").replaceAll("\\+", "%20"); //encode会将空格替换为+号,所有要讲+号替换为空格的转义%20 url = url.replaceAll("%3A", ":").replaceAll("%2F", "/"); //encode会把url里的/和:这2个符号变成%

MyEclipse中jsp的注释报错解决

jsp页面中注释报错: 出错现场:在eclipse中没有报错,在MyEclipse中报错. <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. --> Myeclipse的js中不会识别这样的标识 需要改成: //  To use express install, set to playerProductInstall.swf, otherwise the empty

1. 今天添加SDK报错的原因

今天郁闷至极,真机调试时,昨天建好的工程文件一大早来就无法识别手机,还报一大堆的错,后来下午实在没办法,把工程件删了,重新见一个工程,这下竟然没报错了,但是一添加sdk文件进里面去又报错,我日,直接快让我崩溃了,我当时采用的是直接用"Add Files to xxx", 后来才知道这样添加编译器找不到文件,而是要用到Build Phases ->compile sources--添加文件:   link binary with libraries 添加静态库.然后就解决问题了.