5.1.12. Stats Aggregation

统计聚合

多值指标聚合,可根据从聚合文档中提取的数值计算统计信息。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。

返回的统计信息包括:minmaxsumcountavg

假设数据由代表学生考试成绩(0至100)的文档组成

POST /exams/_search?size=0
{
    "aggs" : {
        "grades_stats" : { "stats" : { "field" : "grade" } }
    }
}

上面的汇总计算了所有文档的成绩统计。聚合类型为统计信息,并且字段设置定义了计算统计信息所依据的文档的数字字段。上面将返回以下内容:

{
    ...

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

聚合的名称(上面的 grades_stats )还用作可以从返回的响应中检索聚合结果的键。

脚本

根据脚本计算成绩统计信息:

POST /exams/_search?size=0
{
    "aggs" : {
        "grades_stats" : {
             "stats" : {
                 "script" : {
                     "lang": "painless",
                     "source": "doc['grade'].value"
                 }
             }
         }
    }
}

这会将脚本参数解释为具有轻松且没有脚本参数的嵌入式脚本语言。要使用存储的脚本,请使用以下语法:

POST /exams/_search?size=0
{
    "aggs" : {
        "grades_stats" : {
            "stats" : {
                "script" : {
                    "id": "my_script",
                    "params" : {
                        "field" : "grade"
                    }
                }
            }
        }
    }
}

值脚本

事实证明,该考试远远超出了学生的水平,因此需要进行成绩更正。我们可以使用值脚本来获取新的统计信息:

POST /exams/_search?size=0
{
    "aggs" : {
        "grades_stats" : {
            "stats" : {
                "field" : "grade",
                "script" : {
                    "lang": "painless",
                    "source": "_value * params.correction",
                    "params" : {
                        "correction" : 1.2
                    }
                }
            }
        }
    }
}

缺失值

missing参数定义应如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值

POST /exams/_search?size=0
{
    "aggs" : {
        "grades_stats" : {
            "stats" : {
                "field" : "grade",
                "missing": 0 
            }
        }
    }
}
  1. grade字段中没有值的文档将与具有值0的文档归入同一存储桶。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~