今天的文章要帶大家認識Elasticsearch提供的一個非常強大的功能:Aggregations
Aggregations以我的看法的話,我會解釋成可以把搜尋出來的結果依照需求統計的功能,下面就來對Aggregations做一點簡單的介紹吧
Aggregations有分以下4種:
這種聚合方式會建立bucket(桶),每一個Bucket都與一個key跟document criterion(文檔條件)有關聯,執行聚合時會對每個文檔比對所有bucket,當條件匹配時文檔會被存入bucket,當聚合結束時會得到一個bucket列表,每個bucket都有屬於該bucket的文檔
對一組文檔進行追蹤及計算指標
匯總其他Aggregations的ouput以及其相關的指標的一種聚合
可對多個字段進行操作,並根據從搜尋結果的文檔字段中提取的值生成矩陣結果,這種Aggregations不支援scripting(腳本)
另外聚合也支援巢狀結構,就是在一種聚合底下再聚合另外一種聚合
以下是官方給的聚合的基本結構
"aggregations" : {
"<aggregation_name>" : {
"<aggregation_type>" : {
<aggregation_body>
}
[,"meta" : { [<meta_data_body>] } ]?
[,"aggregations" : { [<sub_aggregation>]+ } ]?
}
[,"<aggregation_name_2>" : { ... } ]*
}
aggregations:也可寫成aggs
aggregation_name:該次聚合的名稱
aggregation_type:聚合的方式
aggregation_body:想聚合的字段之類的
今天就先對聚合做一點簡單的介紹就好,明天開始還有之後好幾天都會對Metrics Aggregations的每一種聚合方式做介紹跟範例