什么是聚合(Aggregation)
-
ElasticSearch除搜索以外,提供針對(duì)ES數(shù)據(jù)進(jìn)行分析的功能
實(shí)時(shí)性高
Hadoop (T+1)
通過(guò)聚合,我們會(huì)得到一個(gè)數(shù)據(jù)的概覽, 是分析和總結(jié)全套的數(shù)據(jù),而不是尋找單個(gè)文檔
-
高性能,只需要一條語(yǔ)句,就可以從ElasticSearch得到分析結(jié)果
- 無(wú)需在客戶端自己去實(shí)現(xiàn)分析邏輯
Kibana可視化報(bào)表 - 聚合分析
公司程序員的工作崗位分布
公司采用的編程框架分布
公司員工薪水分布
客戶的地理位置分布
訂單的增長(zhǎng)情況
等等...
集合的分類(lèi)
Bucket Aggregation - 一些列滿足特定條件的文檔的集合
Metric Aggregation - 一些數(shù)學(xué)運(yùn)算,可以對(duì)文檔字段進(jìn)行統(tǒng)計(jì)分析
Pipeline Aggregation - 對(duì)其他的聚合結(jié)果進(jìn)行二次聚合
Matrix Aggregation - 支持對(duì)多個(gè)字段的操作并提供一個(gè)結(jié)果矩陣
Bucket & Metric
Bucket
-
一些例子
杭州屬于浙江 / 一個(gè)演員屬于男性或女性
嵌套關(guān)系 - 杭州屬于浙江屬于中國(guó)屬于亞洲
-
ElasticSearch提供了很多類(lèi)型的Bucket,幫助你用多種方式劃分文檔
- Term&Range (時(shí)間/年齡區(qū)間/地理)
Metric
Metric會(huì)基于數(shù)據(jù)計(jì)算結(jié)果,除了支持在字段上進(jìn)行計(jì)算,同樣也支持在腳本(painless script)產(chǎn)生的結(jié)果之上進(jìn)行計(jì)算
-
大多數(shù)Metric是數(shù)學(xué)計(jì)算,僅輸出一個(gè)值
- min/max/sum/avg/cardinality
-
部分metric支持輸出多個(gè)數(shù)值
- stats/precentiles/percentile_rank
一個(gè)Bucket的例子
查看航班目的地的統(tǒng)計(jì)信息
加入Metrics
查看航班上的地的統(tǒng)計(jì)信息,增加均價(jià),最高最低價(jià)格
嵌套
查看航班上的地的統(tǒng)計(jì)信息,平均票價(jià),以及天氣狀況
課程Demo
- 需要通過(guò)Kibana導(dǎo)入Sample Data的飛機(jī)航班數(shù)據(jù)婆咸。具體參考“2.2節(jié)-Kibana的安裝與界面快速瀏覽”
#按照目的地進(jìn)行分桶統(tǒng)計(jì)
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry"
}
}
}
}
#查看航班目的地的統(tǒng)計(jì)信息闲延,增加平均勒虾,最高最低價(jià)格
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"
}
}
}
}
}
}
#價(jià)格統(tǒng)計(jì)信息+天氣信息
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)閱讀