什么是聚合(Aggregation)
-
ElasticSearch除搜索以外,提供針對ES數(shù)據(jù)進行分析的功能
實時性高
Hadoop (T+1)
通過聚合,我們會得到一個數(shù)據(jù)的概覽, 是分析和總結(jié)全套的數(shù)據(jù),而不是尋找單個文檔
-
高性能,只需要一條語句,就可以從ElasticSearch得到分析結(jié)果
- 無需在客戶端自己去實現(xiàn)分析邏輯
Kibana可視化報表 - 聚合分析

image.png
公司程序員的工作崗位分布
公司采用的編程框架分布
公司員工薪水分布
客戶的地理位置分布
訂單的增長情況
等等...
集合的分類
Bucket Aggregation - 一些列滿足特定條件的文檔的集合
Metric Aggregation - 一些數(shù)學運算,可以對文檔字段進行統(tǒng)計分析
Pipeline Aggregation - 對其他的聚合結(jié)果進行二次聚合
Matrix Aggregation - 支持對多個字段的操作并提供一個結(jié)果矩陣
Bucket & Metric

image.png
Bucket

image.png
-
一些例子
杭州屬于浙江 / 一個演員屬于男性或女性
嵌套關(guān)系 - 杭州屬于浙江屬于中國屬于亞洲
-
ElasticSearch提供了很多類型的Bucket,幫助你用多種方式劃分文檔
- Term&Range (時間/年齡區(qū)間/地理)
Metric
Metric會基于數(shù)據(jù)計算結(jié)果,除了支持在字段上進行計算,同樣也支持在腳本(painless script)產(chǎn)生的結(jié)果之上進行計算
-
大多數(shù)Metric是數(shù)學計算,僅輸出一個值
- min/max/sum/avg/cardinality
-
部分metric支持輸出多個數(shù)值
- stats/precentiles/percentile_rank
一個Bucket的例子
查看航班目的地的統(tǒng)計信息

image.png
加入Metrics
查看航班上的地的統(tǒng)計信息,增加均價,最高最低價格

image.png
嵌套
查看航班上的地的統(tǒng)計信息,平均票價,以及天氣狀況

image.png
課程Demo
- 需要通過Kibana導入Sample Data的飛機航班數(shù)據(jù)。具體參考“2.2節(jié)-Kibana的安裝與界面快速瀏覽”
#按照目的地進行分桶統(tǒng)計
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
}
}
}
}
#查看航班目的地的統(tǒng)計信息,增加平均,最高最低價格
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"
}
}
}
}
}
}
#價格統(tǒng)計信息+天氣信息
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
}
}
}
}
}
}
相關(guān)閱讀