如何在Elasticsearch中高效获取每个分桶的平均文档数
你可以直接在buckets_path中使用Elasticsearch内置的_count关键字引用每个terms分桶自带的doc_count值,无需额外定义冗余的sales_count聚合。
优化后的查询语句如下:
GET hat_sales/_search { "size": 0, "query": {"match_all": {}}, "aggs": { "stores": { "terms": { "field": "storename", "size": 65536 } }, "average_sales_count": { "avg_bucket": { "buckets_path": "stores>_count" } } } }
_count是Elasticsearch管道聚合支持的内置变量,直接对应每个分桶的原生文档计数,完全匹配单文档对应一笔销售场景下的门店销量统计需求,同时还能避免原写法中cardinality聚合带来的近似计算误差,降低查询的资源消耗。
内容的提问来源于stack exchange,提问作者Sean Letendre
相关产品推荐
相关产品推荐

