前言
Elasticsearch提供了強大的聚合能力,聚合主要分為兩種:
- Bucket Aggregations:桶聚合,也稱為次元聚合
- Metrics Aggregations:名額聚合
本文主要講解Bucket Aggregations相關内容
準備
版本
- Elasticsearch:7.17.10
- Kibana:7.17.10
準備資料
打開Kibana,側邊欄選擇Home,點選Try sample data
Try sample data
點選Add data按鈕,添加sample data即可
add sample data
檢視資料
添加好資料後,我們可以通過以下途徑檢視剛剛添加的資料所在的index資訊
在側邊欄找到Management -> Stack Management,找到Data -> Index Management,點選Index Management,就可以檢視es中的index資訊,剛剛我們添加的資料所在index如下:
- kibana_sample_data_flights
- kibana_sample_data_ecommerce
- kibana_sample_data_logs
點選對應的index,選擇mappings,就可以檢視對應的index裡面的詳細字段資訊
檢視index字段資訊
Bucket Aggregations
是什麼
Bucket Aggregations,通常被稱為桶聚合,次元聚合,那麼它到底是什麼意思呢?
其實本質就是過濾/分組,依據特定的條件進行過濾/分組,把符合條件的文檔,放到特定的Bucket裡面,這就是Bucket Aggregations
桶聚合本質
常見的Bucket Aggregations:
- terms
- filter
- filters
- range
- date_range
- histogram
- date_histogram
- missing
terms
過濾/分組特定條件:依據文檔某字段的唯一值進行分組
舉例:統計航班目的地城市top10
terms聚合
filter
過濾/分組特定條件:依據指定的單個查詢條件進行過濾
舉例:統計目的地為Shanghai的航班次數
filter聚合
filters
過濾/分組特定條件:依據指定的多個查詢條件進行過濾
舉例:統計目的地為Shanghai和目的地為Beijing的航班次數
filters聚合
range
過濾/分組特定條件:依據指定範圍進行分組
舉例:統計平均票價 < 100,100 <= 平均票價 < 200,平均票價 >= 200的航班次數
range聚合
date_range
過濾/分組特定條件:依據指定日期範圍進行分組
舉例:統計航班時間 < 現在減去10個月,四舍五入到月初;航班時間 >= 現在減去10個月,四舍五入到月初的航班次數
date_range聚合
histogram
過濾/分組特定條件:依據指定間隔進行分組
舉例:依據100間隔,統計平均票價每100價格區間的航班次數
histogram聚合
date_histogram
過濾/分組特定條件:依據指定時間間隔進行分組
舉例:統計每個月的的航班次數
date_histogram聚合
missing
過濾/分組特定條件:依據字段是缺失值進行過濾
舉例:統計沒有目的地的航班次數
missing聚合
結束語
本文介紹了Elasticsearch聚合中的Bucket Aggregations本質以及常見的Bucket Aggregations類型,歡迎大家留言讨論