聚合分为三大类:
- 度量聚合:在一组文档中对某一个数字字段进行计算得出指标值
- 分组聚合:创建多个分组,每个分组都关联一个关键字和相关文档标准。当聚合执行的时候,所有的分组会根据自身标准评估每一个符合的文档。(分组聚合可以嵌套一个或者多个字聚合)
- 管道聚合:这一类聚合的数据源是其他聚合的输出,然后进行相关指标的计算。
管道聚合
管道聚合工作于其他聚合产生输出结果而不是文档集。
bucket_path参数指定请求指标的路径
1. 平均分组聚合
用avg_bucket来表示
{
"avg_bucket":{"bucket_path":"另一个聚合名称"}
}
计算每月销售总额和平均值
{
"size":0,
"aggs":{
"sales_per_month":{
"date_histogram":{
"field":"sale",
"interval":"month"
},
"aggs":{
"sales":{
"sum":{
"field":"sale"
}
}
}
},
"avg_month_sale":{
"avg_bucket":{
"buckets_path":"sales_per_month.sales"
}
}
}
}
2. 总和平均聚合
用sum_bucket 和avg_bucket 用法差不多
3. 总和累计聚合
用cumulative_sum,这个累计表示 每一个bucket 都要加上前面的bucket
{
"size":0,
"aggs":{
"sales_per_month":{
"date_histogram":{
"field":"sale",
"interval":"month"
},
"aggs":{
"sales":{
"sum":{
"field":"sale"
}
}
},
"cumulative_sale":{
"cumulative_sum":{
"buckets_path":"sales"
}
}
}
}
}
4. 最小、最大分组聚合
min_bucket / max_bucket
5. 统计分组聚合
stats_bucket ,就是会计算出 count、min、max、avg
6. 百分比聚合
percentiles_bucket