天天看點

一文詳解Elasticsearch的Bucket Aggregations

作者:寫代碼的lorre

前言

Elasticsearch提供了強大的聚合能力,聚合主要分為兩種:

  • Bucket Aggregations:桶聚合,也稱為次元聚合
  • Metrics Aggregations:名額聚合

本文主要講解Bucket Aggregations相關内容

準備

版本

  • Elasticsearch:7.17.10
  • Kibana:7.17.10

準備資料

打開Kibana,側邊欄選擇Home,點選Try sample data

一文詳解Elasticsearch的Bucket Aggregations

Try sample data

點選Add data按鈕,添加sample data即可

一文詳解Elasticsearch的Bucket Aggregations

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裡面的詳細字段資訊

一文詳解Elasticsearch的Bucket Aggregations

檢視index字段資訊

Bucket Aggregations

是什麼

Bucket Aggregations,通常被稱為桶聚合,次元聚合,那麼它到底是什麼意思呢?

其實本質就是過濾/分組,依據特定的條件進行過濾/分組,把符合條件的文檔,放到特定的Bucket裡面,這就是Bucket Aggregations

一文詳解Elasticsearch的Bucket Aggregations

桶聚合本質

常見的Bucket Aggregations:

  • terms
  • filter
  • filters
  • range
  • date_range
  • histogram
  • date_histogram
  • missing

terms

過濾/分組特定條件:依據文檔某字段的唯一值進行分組

舉例:統計航班目的地城市top10

一文詳解Elasticsearch的Bucket Aggregations

terms聚合

filter

過濾/分組特定條件:依據指定的單個查詢條件進行過濾

舉例:統計目的地為Shanghai的航班次數

一文詳解Elasticsearch的Bucket Aggregations

filter聚合

filters

過濾/分組特定條件:依據指定的多個查詢條件進行過濾

舉例:統計目的地為Shanghai和目的地為Beijing的航班次數

一文詳解Elasticsearch的Bucket Aggregations

filters聚合

range

過濾/分組特定條件:依據指定範圍進行分組

舉例:統計平均票價 < 100,100 <= 平均票價 < 200,平均票價 >= 200的航班次數

一文詳解Elasticsearch的Bucket Aggregations

range聚合

date_range

過濾/分組特定條件:依據指定日期範圍進行分組

舉例:統計航班時間 < 現在減去10個月,四舍五入到月初;航班時間 >= 現在減去10個月,四舍五入到月初的航班次數

一文詳解Elasticsearch的Bucket Aggregations

date_range聚合

histogram

過濾/分組特定條件:依據指定間隔進行分組

舉例:依據100間隔,統計平均票價每100價格區間的航班次數

一文詳解Elasticsearch的Bucket Aggregations

histogram聚合

date_histogram

過濾/分組特定條件:依據指定時間間隔進行分組

舉例:統計每個月的的航班次數

一文詳解Elasticsearch的Bucket Aggregations

date_histogram聚合

missing

過濾/分組特定條件:依據字段是缺失值進行過濾

舉例:統計沒有目的地的航班次數

一文詳解Elasticsearch的Bucket Aggregations

missing聚合

結束語

本文介紹了Elasticsearch聚合中的Bucket Aggregations本質以及常見的Bucket Aggregations類型,歡迎大家留言讨論

繼續閱讀