管道聚合
基于前一次聚合的结果,进行二次聚合统计。
从结构上可以分为兄弟级(Sibling)管道聚合和父级(Parent)管道聚合两种方式。
- 兄弟级管道聚合:在同一聚合级别上可以产生新的聚合。
GET kibana_sample_data_logs/_search
{
"size": 0,
"aggs": {
"count_per_day": {
"date_histogram": {
"field": "@timestamp",
"calendar_interval": "day"
}
},
"total_bytes_of_download": {
"sum": {
"field": "bytes"
}
}
}
}
- 父级管道聚合:由父聚合提供输出,子聚合能够产生新的桶,然后可以添加到父桶中。
GET kibana_sample_data_logs/_search
{
"size": 0,
"aggs": {
"count_per_day": {
"date_histogram": {
"field": "@timestamp",
"calendar_interval": "day"
},
"aggs": {
"total_bytes_per_day": {
"sum": {
"field": "bytes"
}
}
}
}
}
}
max_bucket、min_bucket、avg_bucket、sum_bucket
基于兄弟级管道聚合的方式,从多个分桶中获取指定数值指标的聚合结果(最大值 / 最小值 / 平均值 / 和)。
- buckets_path:(必须)目标桶的路径指向。
- gap_policy:分桶数据出现空值或者缺失值的处理策略,默认 skip。gap_policy 详细说明
- skip:跳过空值或者缺失值,不参与聚合计算。
- insert_zeros:将空值或者缺失值当作 0 来参与聚合计算。
- keep_values:如果提供的指标值是一个空值或者缺失值(null、NAN)则跳过,不参与聚合计算;否则使用该指标值参与聚合计算。
- format:指定数值的输出格式,比如 #、#0.00。默认 null。
1、统计每个出发地国家的最长的航班飞行时间,并且获取航班飞行时间最长的国家以及对应的航班飞行时间。
GET kibana_sample_data_flights/_search
{
"size": 0,
"track_total_hits": true,
"aggs": {
"terms_OriginCountry": {
"terms": {
"field": "OriginCountry",
"size": 20
},
"aggs": {
"max_FlightTimeMin": {
"max": {
"field": "FlightTimeMin"
}
}
}
},
"pipeline-max-bucket": {
"max_bucket": {
"buckets_path": "terms_OriginCountry>max_FlightTimeMin"
}
}
}
}
截取部分的聚合结果如下:
"pipeline-max-bucket" : {
"value" : 1902.9019775390625,
"keys" : [
"AR"
]
}
2、获取出发地国家中各个出发地城市的航班飞行时间的最大值,然后统计出发地城市中航班飞行时间最长的飞行时长以及对应的出发地城市名称。
GET kibana_sample_data_flights/_search
{
"size": 0,
"track_total_hits": true,
"aggs": {
"terms_OriginCountry": {
"terms": {
"field": "OriginCountry",
"size": 20
},
"aggs": {
"terms_OriginCityName": {
"terms": {
"field": "OriginCityName",
"size": 20
},
"aggs": {
"max_FlightTimeMin": {
"max": {
"field": "FlightTimeMin"
}
}
}
},
"Max_Bucket_OriginCityName_FlightTimeMin": {
"max_bucket": {
"buckets_path": "terms_OriginCityName>max_FlightTimeMin"
}
}
}
}
}
}
截取以出发地国家维度的第一个分桶中的管道聚合的结果。
"Max_Bucket_OriginCityName_FlightTimeMin" : {
"value" : 1559.6236572265625,
"keys" : [
"Rome"
]
}
3、在 2 的基础上获取出发地国家中航班最长的飞行时间以及对应的出发地国家名称。
GET kibana_sample_data_flights/_search
{
"size": 0,
"track_total_hits": true,
"aggs": {
"terms_OriginCountry": {
"terms": {
"field": "OriginCountry",
"size": 20
},
"aggs": {
"terms_OriginCityName": {
"terms": {
"field": "OriginCityName",
"size": 20
},
"aggs": {
"max_FlightTimeMin": {
"max": {
"field": "FlightTimeMin"
}
}
}
},
"Max_Bucket_OriginCityName_FlightTimeMin": {
"max_bucket": {
"buckets_path": "terms_OriginCityName>max_FlightTimeMin"
}
}
}
},
"Max_Bucket_OriginCountry_FlightTimeMin": {
"max_bucket": {
"buckets_path": "terms_OriginCountry>Max_Bucket_OriginCityName_FlightTimeMin"
}
}
}
}
在 2 的基础上额外输出出发地国家纬度的管道聚合结果。
"Max_Bucket_OriginCountry_FlightTimeMin" : {
"value" : 1902.9019775390625,
"keys" : [
"AR"
]
}
stats_bucket
基于兄弟级管道聚合的方式,从多个分桶中获取指定数值指标的统计聚合结果。
- buckets_path:(必须)目标桶的路径指向。
- gap_policy:分桶数据出现空值或者缺失值的处理策略,默认 skip。gap_policy 详细说明
- skip:跳过空值或者缺失值,不参与聚合计算。
- insert_zeros:将空值或者缺失值当作 0 来参与聚合计算。
- keep_values:如果提供的指标值是一个空值或者缺失值(null、NAN)则跳过,不参与聚合计算;否则使用该指标值参与聚合计算。
- format:指定数值的输出格式,比如 #、#0.00。默认 null。
- sigma:标准差的倍数,默认 2。用于确定一个数据点是否属于异常值。
1、统计出发地国家中各个出发地城市的航班飞行时间的平均时长,然后统计这些平均时长在出发地国家纬度下的各项指标。
GET kibana_sample_data_flights/_search
{
"size": 0,
"track_total_hits": true,
"aggs": {
"terms_OriginCountry": {
"terms": {
"field": "OriginCountry",
"size": 20
},
"aggs": {
"terms_OriginCityName": {
"terms": {
"field": "OriginCityName",
"size": 20
},
"aggs": {
"avg_FlightTimeMin": {
"avg": {
"field": "FlightTimeMin"
}
}
}
},
"Stats_Bucket_OriginCityName_FlightTimeMin": {
"stats_bucket": {
"buckets_path": "terms_OriginCityName>avg_FlightTimeMin"
}
}
}
}
}
}
截取部分的聚合结果如下:
"Stats_Bucket_OriginCityName_FlightTimeMin" : {
"count" : 15,
"min" : 226.4979310909907,
"max" : 472.0975369329038,
"avg" : 378.1233526619374,
"sum" : 5671.850289929062
}
extended_stats_bucket
基于兄弟级管道聚合的方式,从多个分桶中获取指定数值指标的拓展统计聚合结果。
- buckets_path:(必须)目标桶的路径指向。
- gap_policy:分桶数据出现空值或者缺失值的处理策略,默认 skip。gap_policy 详细说明
- skip:跳过空值或者缺失值,不参与聚合计算。
- insert_zeros:将空值或者缺失值当作 0 来参与聚合计算。
- keep_values:如果提供的指标值是一个空值或者缺失值(null、NAN)则跳过,不参与聚合计算;否则使用该指标值参与聚合计算。
- format:指定数值的输出格式,比如 #、#0.00。默认 null。
- sigma:标准差的倍数,默认 2。用于确定一个数据点是否属于异常值。
1、统计出发地国家中各个出发地城市的航班飞行时间的平均时长,然后统计这些平均时长在出发地城市纬度下的各项指标。
GET kibana_sample_data_flights/_search
{
"size": 0,
"track_total_hits": true,
"aggs": {
"terms_OriginCountry": {
"terms": {
"field": "OriginCountry",
"size": 20
},
"aggs": {
"terms_OriginCityName": {
"terms": {
"field": "OriginCityName",
"size": 20
},
"aggs": {