ElasticSearch:从多层嵌套数组对象中聚合获取ram属性对应的value值
错误原因
- 字段路径缺失顶层
doc前缀:从映射和示例文档可以看到,characteristics字段存放在doc对象下,之前写的根路径characteristics匹配不到任何数据 - 字段类型匹配错误:
characteristics.name和characteristics.values.value都是text类型,term查询和terms聚合都需要使用对应字段的keyword子字段才能正常工作
正确聚合查询语句
{ "size": 0, "aggs": { "characteristics": { "nested": { "path": "doc.characteristics" }, "aggs": { "ram": { "filter": { "bool": { "must": [ { "term": { "doc.characteristics.name.keyword": "ram" } } ] } }, "aggs": { "values": { "nested": { "path": "doc.characteristics.values" }, "aggs": { "all_values": { "terms": { "field": "doc.characteristics.values.value.keyword", "size": 10 } } } } } } } } } }
执行后可以在返回结果的aggregations.characteristics.ram.values.all_values.buckets里拿到你需要的ram对应的所有value值。
内容的提问来源于stack exchange,提问作者Giannos Charalambous
相关产品推荐
相关产品推荐

