elasticsearch嵌套对象的映射

网友投稿 270 2022-09-26

elasticsearch嵌套对象的映射

在es中,我们有时候可能需要映射,{ "field" : "xx" , "field01" : [] }这样格式的嵌套对象,默认情况下es会将field01的type映射成object类型,这个时候,我们去查询可能就会出现问题。需要手动修改成nested嵌套类。型。

一、有问题的情形演示。

1、插入数据,es默认会自动创建映射

curl -XPUT "-d'{ "name" : "my name is zhangsa", "address" : [ { "city" : "china hubei", "zipcode" : "123456" }, { "city" : "china huanggang", "zipcode" : "654321" } ]}'

2、查询name字段中必须要出现name这个值,且address.city的值是"huanggang",address.zipcode的值是123456,这个时候应该查询不出来数据,可是查询的结果如下。     注意:这样可以查询出来是因为底层的存储格式被扁平化成下方这种格式了

address.city=["china", "hubei","huanggang"]

address.zipcode=["123456","64321"]

那么city和zipcode之间的关联关系就打乱了。

1、创建索引的时候,手动指定address的type为nested

curl -XPUT "-d'{ "mappings": { "personinfo" : { "properties": { "name" : { "type": "text" }, "address" : { "type": "nested", "properties": { "city" : { "type" : "text" }, "zipcode" : { "type" : "keyword" } } } } } }}'

2、插入数据

curl -XPUT "-d'{ "name" : "my name is zhangsa", "address" : [ { "city" : "china hubei", "zipcode" : "123456" }, { "city" : "china huanggang", "zipcode" : "654321" } ]}'

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring cache整合redis
下一篇:营销案例精选:员工发“勿忘国耻”被警告离职?松下回应!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~