聚合的分類
1. matric聚合 :在一組文檔中計算指標的聚合,如sum,min,max,avg
2.bucket聚合 : 構建存儲桶的一系列聚合。(分組,篩選)
3.pipeline聚合 :聚合其他聚合的輸出 及 其關聯指標的聚合
4.matrix聚合 :在多字段上進行一系列的聚合,並根據從請求的文檔字段中提取的值生成矩陣結果。
1. matric聚合
大概格式(還有用腳本計算的版本,先不記錄)
POST student/_search #用get也可以 { "size": 0, #表示只顯示聚合的值,不顯示具體數據 "aggs": { "name1": { "percentile_ranks": { #關鍵字 "field": "grade", #聚合的字段 "values": [ #不同關鍵字,可用的參數不一致(可省略) 89, 90 ] } } } }
關鍵字:
avg 平均值
weighted_avg 加權平均值
cardinality (同distinct功能) 計數,精確計算-使用參數precision_threshold 值越大,占用內存越大,最高是40000,超過這個值也按這個值計算
對於字符串且基數高,存儲的字段值轉化為hash值會更快
min 最小值
max 最大值
sum 求和
value_count 計數(如果是缺失值將會被忽略)
stats 多個度量值的聚合(sum,count,avg,min,max 都會顯示)
extended_stats 多個度量值的聚合(sum,count,avg,min,max,sum_of_squares 平方, variance 方差, std_deviation 標准差, std_deviation_bounds平均值加/減兩個標准差的區間)
percentiles 從聚合文檔的數值上,提取一個或多個百分位數(1%,5%,25%,50%,75%,95%,99% 分布對應的值)如50%是小於一個值的。
percentiles_ranks 與percentiles相反, 指定小於等於的指定值的文檔,統計占比
2.bucket聚合
terms 分桶
top_hits 桶分組后,取最頂端的值