Elasticsearch 聚合后过滤聚合值
时间: 2023-08-05 18:01:54 浏览: 59
在 Elasticsearch 中,可以使用 Bucket Selector 聚合过滤器来过滤聚合结果中的桶。Bucket Selector 聚合过滤器可以根据条件过滤聚合结果中的桶,只有符合条件的桶会被保留,不符合条件的桶则会被过滤掉。以下是一个示例:
假设我们有一个索引,里面存储了用户的购买记录,其中包含用户 ID、商品名称和购买金额。我们想要按照用户 ID 聚合购买金额,然后过滤出购买金额大于 100 的用户 ID。可以使用以下查询实现:
```
{
"size": 0,
"aggs": {
"user_ids": {
"terms": {
"field": "user_id"
},
"aggs": {
"total_purchase": {
"sum": {
"field": "purchase_amount"
}
},
"filtered_aggs": {
"bucket_selector": {
"buckets_path": {
"totalPurchase": "total_purchase"
},
"script": "params.totalPurchase > 100"
}
}
}
}
}
}
```
上述查询会按照用户 ID 聚合所有购买记录,并计算每个用户的购买金额总和。然后使用 Bucket Selector 聚合过滤器过滤出购买金额大于 100 的用户 ID,最终返回符合条件的用户 ID 和对应的购买金额总和。