Elasticsearch 中的 nested 类型
参考官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/nested.html
使用netsted 类型,可以实现扁平化处理,避免查询出没有出现的组合
下面举例说明:
#我们插入大鲨鱼和小蝌蚪 PUT my_index/_doc/1 { "group" : "fans", "user" : [ { "first" : "大", "last" : "鲨鱼" }, { "first" : "小", "last" : "蝌蚪" } ] } #搜索大蝌蚪:这里应该是查不到的,可是结果是找到了大鲨鱼和小蝌蚪,结果错误 GET my_index/_search { "query": { "bool": { "must": [ { "match": { "user.first": "大" }}, { "match": { "user.last": "蝌蚪" }} ] } } } #搜索小鲨鱼:这里应该是查不到的,可是结果是找到了大鲨鱼和小蝌蚪,结果错误 GET my_index/_search { "query": { "bool": { "must": [ { "match": { "user.first": "小" }}, { "match": { "user.last": "鲨鱼" }} ] } } } #搜索鲨鱼蝌蚪:结果为空,正确 GET my_index/_search { "query": { "bool": { "must": [ { "match": { "user.first": "鲨鱼" }}, { "match": { "user.last": "蝌蚪" }} ] } } } #搜索蝌蚪鲨鱼:结果为空,正确 GET my_index/_search { "query": { "bool": { "must": [ { "match": { "user.first": "蝌蚪" }}, { "match": { "user.last": "鲨鱼" }} ] } } }
我们插入大鲨鱼和小蝌蚪,在查找时,使用小鲨鱼和大蝌蚪,也可以查询到结果,这个是我们不希望看到的,这里就需要使用nested类型
使用nested类型后:
#先删除原来的索引 DELETE my_index #使用nested类型 PUT my_index { "mappings": { "properties": { "user": { "type": "nested" } } } } #新建索引 PUT my_index/_doc/1 { "group" : "fans", "user" : [ { "first" : "大", "last" : "鲨鱼" }, { "first" : "小", "last" : "蝌蚪" } ] }
现在使用查询小鲨鱼和大蝌蚪,则显示查询结果为空
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!