【发布时间】:2021-10-19 16:40:08
【问题描述】:
假设我们是帽子制造商,并且有一个 Elasticsearch 索引,其中每个文档对应于一顶帽子的销售。销售记录的一部分是出售帽子的商店的名称。我想找出每家商店售出的帽子数量,以及所有商店售出的平均帽子数量。我能弄清楚的最好方法是这个搜索:
GET hat_sales/_search
{
"size": 0,
"query": {"match_all": {}},
"aggs": {
"stores": {
"terms": {
"field": "storename",
"size": 65536
},
"aggs": {
"sales_count": {
"cardinality": {
"field": "_id"
}
}
}
},
"average_sales_count": {
"avg_bucket": {
"buckets_path": "stores>sales_count"
}
}
}
}
(旁白:我将大小设置为 65536,因为这是默认的最大桶数。)
这个查询的问题是sales_count 聚合执行了冗余计算:每个stores 存储桶已经有一个doc_count 属性。但是如何在存储桶路径中访问此 doc_count?
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation