ElasticSearch(七):聚合分析简介
学习课程链接《Elasticsearch核心技术与实战》
什么是聚合(Aggregation)
- ElasticSearch除了搜索外,还提供了针对ElasticSearch数据进行统计分析的功能
- 通过聚合,会得到一个数据的概览,这样就可以分析和总结全套的数据,而不是仅仅能寻找单个文档
- 易用性,只需要一条语句,就可以从ElasticSearch中得到分析结果,从而避免在客户端实现分析逻辑
聚合的分类
- Bucket Aggregation:一些列满足特定条件的文档集合,其相当于SQL中的Group By
- Metric Aggregation:一些数学运算,可以对文档字段进行统计分析
- 其相当于SQL中对于字段进行运算的函数,如Sum、Count等。它除了可以在字段上进行计算,还可以在脚本产生的结果上进行计算
- 大多数Metric是数学计算,输出一个值,如:min/max/sum/avg/cardinality
- 部分支持输出多个值,如:stats/percentiles/percentile_ranks
- Pipeline Aggregation:对其他的聚合结果进行二次聚合
- Matrix Aggregation:支持对多个字段的操作并提供一个结果矩阵
一些聚合分析例子
#按照目的地进行分桶统计
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
}
}
}
}
#查看航班目的地的统计信息,增加平均,最高最低价格
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"
}
}
}
}
}
}
#价格统计信息+天气信息
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
},
"aggs":{
"stats_price":{
"stats":{
"field":"AvgTicketPrice"
}
},
"wather":{
"terms": {
"field": "DestWeather",
"size": 5
}
}
}
}
}
}