Elasticsearch聚合初探

By admin in 亚洲必赢app在哪下载 on 2019年3月13日

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" } }
    }
}

马克斯 求最大值

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

avg 求平均值

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

cardinality 求唯一值,即不重复的字段有个别许

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

多值聚合

亚洲必赢app在哪下载,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的总结。
  • 在汇聚中补助脚本的利用,能够追加计算的灵活度。

广大情节还亟需在实践中使用,才能明白它的优势。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢app官方下载 版权所有