概念及适用场景
官方释义:这个nested类型是object[1]一种数据类型,允许对象数组以相互独立的方式进行索引
适用场景:字段值为复杂类型的情况,说人话,就是字段值为 json 兑现的时候。
案例演示
场景:假设我们有一个订单索引:order,其包含了订单名称、商品数量、订单总金额以及订单商品明细等数据
需求:查询订单商品中商品名称为dishwasher并且商品价格为1999的订单信息,尝试执行以下脚本
结果
按照bool中must的查询逻辑,两个条件都符合的数据并不存在,然而执行查询后发现返回以下结果
原因
可以看到上述结果元数据中出现了订单数据,这和预期结果不一致。
分析原因如下:
当字段值为复杂数据类型(Object、Geo-Point等)的时候,ES内部实际是以如下方式保存数据的:
上述例子中goods_list中每个对象元素的属性值被扁平化存储在了数组中,此时已丢失了对应关系,因此无法保证搜索的准确。
解决方案
使用Nested类型
用法
上述问题解决办法即对复杂类型使用Nested类型。在ES中嵌套类型不止Nested一种,但是只有Nested是单独的考点,因此其他的暂不需考虑。
1:创建Mapping:在Mapping中为复杂类型指定Nested类型
2:写入数据再次写入数据,此处省去此步骤代码。3:验证结果执行查询,实际为query外层进行了一层嵌套。

你们点点“分享”,给我充点儿电吧~
文章转载自Elasticsearch之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
阿里云 Elasticsearch Serverless 检索增强型 8.17 版来袭!
阿里云大数据AI技术
356次阅读
2025-04-18 10:24:15
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
SelectDB
160次阅读
2025-03-27 17:56:44
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
SelectDB
128次阅读
2025-04-02 17:52:59
阿里云 Elasticsearch Serverless 检索增强型8.17版免费邀测!
阿里云大数据AI技术
58次阅读
2025-04-15 13:18:15
2025 XCOPS广州站:故障预测、根因分析全链路实战指南
铭毅天下Elasticsearch
42次阅读
2025-04-09 11:01:27
利用 EDB Postgres AI - WarehousePG 替换 Greenplum 实现数据仓库现代化
新智锦绣
34次阅读
2025-04-18 17:28:36
Elasticsearch 8.X 如何利用嵌入向量提升搜索能力?
铭毅天下Elasticsearch
32次阅读
2025-04-09 11:01:28
【视频上新】Coco AI 部署及使用详解
铭毅天下Elasticsearch
31次阅读
2025-04-09 11:01:26
为流复制优化TCP设置
新智锦绣
24次阅读
2025-04-10 11:52:27
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?(建议收藏)
一臻数据
24次阅读
2025-04-03 09:58:54