-
什么是聚合分析芳悲?
聚合分析立肘,英文為Aggregation,是ES除搜索功能外提供的針對ES數據做統(tǒng)計分析的功能名扛。功能豐富谅年,提供Bucket,Metric肮韧,Pipeline等多種分析方式融蹂,可以滿足大部分的分析需求。實時性高弄企,所有的計算結果都是即時返回的超燃。
聚合分析作為search的一部分,api如下圖所示:聚合分析
? - Bucket:分桶類型。類似SQl中的GROUP BY 語法
? - Metric:指標分析類型涮总,如計算最大值耘戚、最小值、平均值等等
? - Pipeline:管道分析類型本涕,基于上一級的聚合分析結果進行再分析
? - Matrix:矩陣分析類型 -
Metric
主要分如下兩類:
? - 單值分析业汰,只輸出一個分析結果
? ? - min,max菩颖,avg样漆,sum
? ? - cardinality
? - 多值分析
? ? - stats,extended晦闰,stats
? ? - percentile放祟,percentile rank
? ? - top hits
? - Min,返回數值類的最小值
Min - 一次返回多個聚合結果,api及響應如下所示:返回多個結果CardinalitystatsExtended StatsPercentilePercentile RankTop Hits
-
Bucket
? - bucket,意為桶床玻,即按照一定規(guī)則將文檔分配到不同桶中毁涉,達到分類的目的。Bucket
? - 按照Bucket的分桶策略锈死,常見的Bucket聚合分析如下:
? ? - Terms:該分桶策略最簡單贫堰,直接按照 term 來分桶,如果是 text 類型待牵,則按照分詞后的結果分桶Terms 分桶Range 分桶Date Range 分桶Histogram分桶Date Histogram 分桶 -
Bucket + Metric 聚合分析
Bucket聚合分析允許通過添加子分析來進一步進行分析缨该,該子分析可以是Bucket也可以是Metric偎行。這也使得es的聚合分析能力變得異常強大
? - 分桶后再分桶Bucket + BucketBucket + Metric - Pipeline 聚合分析
- Pipeline,針對聚合分析的結果再次進行聚合分析,而且支持支鏈調用贰拿。 Pipeline的分析結果會輸出到原結果中蛤袒,根據輸出位置的不同,分為以下兩類:
? - Parent 結果內嵌到現有的聚合分析結果中
?? - Derivative (求導)
?? - Moving Average(移動平均值)
?? - Cumulative Sum(累計求和)
? - Sibling 結果與現有的聚合分析同級
?? - Max /Min / Avg/ Sum Bucket
?? - Stats / Extended Stats Bucket
?? - Percentiles Bucket
Min Bucket膨更,如下例妙真,找出所有Bucket中值最小的Bucket的名稱和值
Min Bucke
Stats, 如下例,計算出所有的Bucket值的Stats(多值分析)
Stats
*Derivative *, 如下例荚守,計算Bucket 值的導數
Derivative
作用范圍
ES聚合分析默認作用范圍是 query 的結果集隐孽,可以通過如下的方式改變其作用范圍:
? - filter
? - post_filter
? - global
image.png