Elasticsearch 的Bucket Selector Aggregation是一种强大的管道聚合功能,用于根据条件过滤聚合结果中的桶(buckets)。它允许用户通过编写脚本来动态决定哪些桶应该被保留,哪些应该被过滤掉。以下是对Bucket Selector Aggregation的详细说明:
1.基本概念
Bucket Selector Aggregation 是一种父级管道聚合,这意味着它依赖于其父级聚合生成的桶。它通过执行一个脚本,根据脚本返回的布尔值来决定是否保留当前桶。如果脚本返回`true`,则保留该桶;如果返回`false`,则过滤掉该桶。
2.主要用途
• 数据筛选:在聚合结果中根据特定条件筛选出符合要求的桶。例如,只保留销售额超过某个阈值的月份。
• 动态过滤:根据动态计算的值(如平均值、总和等)进行过滤。
• 数据清洗:在分析数据时,排除不符合业务逻辑的数据桶。
3.关键组件
3.1buckets_path
`buckets_path`是一个映射,用于定义脚本中变量与父级聚合生成的桶路径之间的关系。它告诉 Elasticsearch 如何从父级聚合中提取数据供脚本使用。
• 格式:
```json
"buckets_path": {
"variable_name": "path_to_metric"
}
```
• 示例:
```json
"buckets_path": {
"totalSales": "total_sales"
}
```
在这个例子中,`totalSales`是脚本中使用的变量名,`total_sales`是父级聚合中某个指标的路径。
3.2script
`s