从外观上看,您
tags不是
nested。为了使此聚合起作用,您需要它,
nested以便an
id和a 之间存在关联
name。没有s
nested的列表
id只是一个数组,而
names
的列表是另一个数组:
"item": { "properties": { "meta": { "properties": { "tags": { "type": "nested",<-- nested field "include_in_parent": true, <-- to, also, keep the flat array-like structure "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } } } } } }
另外,请注意,我已经在映射中添加了这一行
"include_in_parent":true,这意味着您的
nested标签也将像“平面”数组状结构一样工作。
因此,到目前为止,您在查询中拥有的所有内容仍然可以正常使用,而无需对查询进行任何更改。
但是,对于您的这个特定查询,聚合需要更改为以下内容:
{ "aggs": { "baked_goods": { "nested": { "path": "item.meta.tags" }, "aggs": { "name": { "terms": { "field": "item.meta.tags.id" }, "aggs": { "name": { "terms": { "field": "item.meta.tags.name" } } } } } } }}
结果是这样的:
"aggregations": { "baked_goods": { "doc_count": 9, "name": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": 123, "doc_count": 3, "name": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": "biscuits", "doc_count": 3 } ] } }, { "key": 456, "doc_count": 2, "name": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": "cakes", "doc_count": 2 } ] } }, .....
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)