写在前面
本文看下es的聚合相关内容。
1:什么是聚合
即,数据的统计分析。如sum,count,avg,min,max,分组等。
2:支持哪些聚合类型
2.1:bucket aggregation
对满足特定条件的文旦进行分组。如:


2.1:metric aggregation
数学运算。如:


2.3:pipeline aggregation
对聚合的结果进行再一次的聚合。
2.4:matrix aggregation
对多个字段操作并提供一个结果矩阵???嘛意思???
3:实战
测试数据参考这里 。但如果你是按照专栏顺序看的,我想你本地已经有这些数据了。
3.1:bucket aggregation
按照飞行目的地分组:
json
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"飞行目的地分组": {
"terms": {
"field": "DestCountry"
}
}
}
}

3.2:metric aggregation
按照飞行目的地分组后,对分组的数据取最大最小和平均值。
json
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"飞行目的地分组": {
"terms": {
"field": "DestCountry"
},
"aggs": {
"票价平均值": {
"avg": {
"field": "AvgTicketPrice"
}
},
"票价最大值": {
"max": {
"field": "AvgTicketPrice"
}
},
"票价最小值": {
"min": {
"field": "AvgTicketPrice"
}
}
}
}
}
}

按照飞行目的地分组后,通过stats取每个分组的统计信息(会列出min,max,avg等常用统计信息)
,并且对每个分组再按照天气做一次分组,并取前5条数据:
json
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"飞行目的地分组": {
"terms": {
"field": "DestCountry"
},
"aggs": {
"组内统计信息": {
"stats": {
"field": "AvgTicketPrice"
}
},
"weatherrr": {
"terms": {
"field": "DestWeather",
"size": 5
}
}
}
}
}
}

TODO 待补充!!!