介绍
本章会简单介绍es的聚合索引,通过分析bucket和metric和使用来进一步了解聚合索引。
什么是聚合
- es除了搜索意外,还提供的针对es数据进行统计分析的功能
- 通过聚合,我们可以得到一个数据的概览,这个是通过分析和总结的全套数据,不是对单个文档的搜索
- 性能高,只需要一个语句,不需要客户端进行额外的逻辑计算
聚合的分类
- Bucket Aggregation:一系列满足条件的文档的集合
- Metric Aggregation:对文档字段进行数学计算后的统计分析
- Pipeline Aggregation:对其他聚合进行的二次分析
- Matrix Aggregation:对多个字段的操作,并提供一个结果矩阵
下面会通过demo详细介绍对Bucket和Metric两种聚合的使用
Bucket Aggregation
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
}
}
}
}
Bucket Aggregation通过字段term对field字段进行桶排序,以上语句含义为:划分到达不同目的地国家的统计。
返回结果
以上我们看到搜索中hits是为空的,聚合下可以看到以目的地国家为划分的不同的桶
Metric Aggregation
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
},
"aggs":{
"avg_price":{
"avg":{
"field":"AvgTicketPrice"
}
},
"max_price":{
"max":{
"field":"AvgTicketPrice"
}
},
"min_price":{
"min":{
"field":"AvgTicketPrice"
}
}
}
}
}
}
以上通过目的地国家进行分桶,并且对最大,最小,平均值进行了统计计算。
返回结果
以上我们能看到不同的桶下对三种类型计算产生的输出结果。
总结
本章介绍了聚合,通过两个demo简单介绍了Bucket和Metric两种聚合使用。
网友评论