Elasticsearch聚合初探——metric篇
生活随笔
收集整理的這篇文章主要介紹了
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篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql折腾小记二:text/blog
- 下一篇: NFS网络文件系统服务