日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Elasticsearch聚合初探——metric篇

發布時間:2025/3/20 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch聚合初探——metric篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Elasticsearch是一款提供檢索以及相關度排序的開源框架,同時,也支持對存儲的文檔進行復雜的統計——聚合。

前言

ES中的聚合被分為兩大類:Metric度量和bucket桶(原諒我英語差,找不到合適的詞語.....就用單詞來說吧!)。說的通俗點,metric很像SQL中的avg、max、min等方法,而bucket就有點類似group by了。

本篇就簡單的介紹一下metric聚合的用法。

metric的聚合按照值的返回類型可以分為兩種:單值聚合 和 多值聚合。

單值聚合

Sum 求和

這個聚合返回的是單個值,dsl可以參考如下:

"aggs" : {"intraday_return" : { "sum" : { "field" : "change" } }}

返回的是change字段的和:

{..."aggregations": {"intraday_return": {"value": 2.18}} }

其中intraday_return是聚合的名字,同時也會作為請求返回的id值。另外,聚合中是支持腳本的,這里就不過多贅述了,詳細參考官方文檔即可。

Min 求最小值

{"aggs" : {"min_price" : { "min" : { "field" : "price" } }} }

Max 求最大值

{"aggs" : {"max_price" : { "max" : { "field" : "price" } }} }

avg 求平均值

{"aggs" : {"avg_grade" : { "avg" : { "field" : "grade" } }} }

cardinality 求唯一值,即不重復的字段有多少

{"aggs" : {"author_count" : {"cardinality" : {"field" : "author"}}} }

多值聚合

percentiles 求百分比

{"aggs" : {"load_time_outlier" : {"percentile_ranks" : {"field" : "load_time", "values" : [15, 30]}}} }

返回的結果包含多個值:

{..."aggregations": {"load_time_outlier": {"values" : {"15": 92,"30": 100}}} }

stats 統計

{"aggs" : {"grades_stats" : { "stats" : { "field" : "grade" } }} }

請求后會直接顯示多種聚合結果:

{..."aggregations": {"grades_stats": {"count": 6,"min": 60,"max": 98,"avg": 78.5,"sum": 471}} }

extend stats 擴展統計

{"aggs" : {"grades_stats" : { "extended_stats" : { "field" : "grade" } }} }

在統計的基礎上還增加了多種復雜的統計信息:

{..."aggregations": {"grade_stats": {"count": 9,"min": 72,"max": 99,"avg": 86,"sum": 774,"sum_of_squares": 67028,"variance": 51.55555555555556,"std_deviation": 7.180219742846005,"std_deviation_bounds": {"upper": 100.36043948569201,"lower": 71.63956051430799}}} }

總結

上面并沒有列舉全面,比如2.0版本的ES,還支持多值的percentile Rank百分比排名,Geo Bounds地理位置信息,Scripted Metric腳本;單值的top hits等等。

  • 在性能上,ES也做了很多的優化:比如max和min,如果對于排序的字段,那么就直接跳過了計算的步驟,直接取出目標值即可。
  • 當然有些聚合也是需要特定的場合的,比如cardinality計算唯一值是通過哈希的方式,如果字段數據規模很大,那么會消耗很多的性能。
  • 另外桶之間是可以嵌套的,比如在range聚合下嵌套了一個max聚合,那么會在range得到的每個結果組上,再次進行max的統計。
  • 在聚合中支持腳本的使用,可以增加統計的靈活度。

很多內容還需要在實踐中使用,才能了解它的優勢。

轉載于:https://my.oschina.net/u/204616/blog/545171

總結

以上是生活随笔為你收集整理的Elasticsearch聚合初探——metric篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。