- buckets_path:指定聚合的名称,支持多级嵌套聚合。
其他参数:
- gap_policy
当管道聚合遇到不存在的值,有点类似于term等聚合的(missing)时所采取的策略,可选择值为:skip、insert_zeros。
-
skip:此选项将丢失的数据视为bucket不存在。它将跳过桶并使用下一个可用值继续计算。
-
insert_zeros:默认使用0代替。
-
format
用于格式化聚合桶的输出(key)。
示例如下:
POST /_search
{
“size”: 0,
“aggs”: {
“sales_per_month”: { // @1
“date_histogram”: {
“field”: “date”,
“interval”: “month”
},
“aggs”: { // @2
“sales”: {
“sum”: {
“field”: “price”
}
}
}
},
“avg_monthly_sales”: { // @3
“avg_bucket”: {
“buckets_path”: “sales_per_month>sales”
}
}
}
}
代码@1:首先定义第一级聚合(按月)直方图聚合。
代码@2:定义第二级聚合,在按月聚合的基础上,对每个月的文档求sum。
代码@3:对上面的聚合求平均值。
其返回结果如下:
{
… // 省略
“aggregations”: {
“sales_per_month”: {
“buckets”: [
{
“key_as_string”: “2015/01/01 00:00:00”,
“key”: 1420070400000,
“doc_count”: 3,
“sales”: {
“value”: 550.0
}
},
{
“key_as_string”: “2015/02/01 00:00:00”,
“key”: 1422748800000,
“doc_count”: 2,
“sales”: {
“value”: 60.0
}
}
]
},
“avg_monthly_sales”: { // 这是对二级聚合的结果再进行一次求平均值聚合。
“value”: 328.33333333333333
}
}
}
对应的JAVA示例如下:
public static void test_pipeline_avg_buncket_aggregation() {
RestHighLevelClient client = EsClient.getClient();
try {
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(“aggregations_index02”);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
AggregationBuilder aggregationBuild = AggregationBuilders.terms

本文详细介绍了Elasticsearch中的各种管道聚合,如date_histogram、sum、avg_bucket、PercentilesBucketAggregation、CumulativeSumAggregation和BucketSortAggregation,以及它们在JAVA中的实现示例。
最低0.47元/天 解锁文章
2186

被折叠的 条评论
为什么被折叠?



