ES官网reference翻译文章(20)—Stats Aggregation

对ES官网的reference的翻译,同时也是备忘,ES版本为7.5

下面是正文翻译,附上原文链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-stats-aggregation.html

==================================================================================================

统计聚合

多值指标聚合,计算从聚合的文档中提取出来的数值相关的统计信息。这些数值可以从文档中特定的数值字段中提取也可以从给定的脚本中生成。

返回的统计包括:min、max、sum、count和avg

假设数据由表示学生测试成绩(0-100之间的数)的文档组成:

curl -XPOST host_ip:host_port/exams/_search?pretty 
-H 'Content-Type: application/json' 
-d '
{
    "size": 0,
    "aggs" : {
        "grades_stats" : { 
            "stats" : { 
                "field" : "grade" 
            } 
        }
    }
}'

上面的聚合计算所有文档的成绩统计。聚合类型是stats,field设置定义了聚合在文档中哪个数值字段上进行。上面的请求会返回下面的响应:

{
    ...

    "aggregations": {
        "grades_stats": {
            "count": 2,
            "min": 50.0,
            "max": 100.0,
            "avg": 75.0,
            "sum": 150.0
        }
    }
}

聚合的名称(这里的grade_stats)也能作为从返回的响应中提取除聚合结果的key。

脚本

基于脚本计算成绩的统计信息:

curl -XPOST host_ip:host_port/exams/_search?pretty 
-H 'Content-Type: application/json' 
-d '
{
    "size": 0,
    "aggs" : {
        "grades_stats" : { 
            "stats" : { 
                "script" : {
                    "lang": "painless",
                    "source": "doc['grade'].value"
                } 
            } 
        }
    }
}'

上面的请求会使用painless脚本语言编写的无参数的脚本,为了使用保存的脚本(我理解是脚本文件,id就是文件名),使用下面的请求:

curl -XPOST host_ip:host_port/exams/_search?pretty 
-H 'Content-Type: application/json' 
-d '
{
    "size": 0,
    "aggs" : {
        "grades_stats" : { 
            "stats" : { 
                "script" : {
                    "id": "my_script",
                    "params": {
                        "field": "grade"
                    }
                } 
            } 
        }
    }
}'

值脚本

有可能exam的层次比学生的水平要高,我们需要进行成绩校正,我们可以使用值脚本来得到新的数据统计:

curl -XPOST host_ip:host_port/exams/_search?pretty 
-H 'Content-Type: application/json' 
-d '
{
    "size": 0,
    "aggs" : {
        "grades_stats" : { 
            "stats" : { 
                "field": "grade",
                "script" : {
                    "lang": "painless",
                    "source": "_value*params.correction",
                    "params": {
                        "correction": 1.2
                    }
                } 
            } 
        }
    }
}'

缺失的值

missing参数定义了缺失某些值的文档应该如何处理。默认的,这些文档会被忽略但我们也能把这些文档当作有值来处理:

curl -XPOST host_ip:host_port/exams/_search?pretty 
-H 'Content-Type: application/json' 
-d '
{
    "size": 0,
    "aggs" : {
        "grades_stats" : { 
            "stats" : { 
                "field": "grade",
                "missing": 0
            } 
        }
    }
}'

grade字段缺失值的文档将会和grade=0的文档落入相同的桶中。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值