5.1.12. 统计聚合
统计聚合
多值
指标聚合,可根据从聚合文档中提取的数值计算统计信息。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。
返回的统计信息包括:min
,max
,sum
,count
和avg
。
假设数据由代表学生考试成绩(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
}
}
}
}
- 在
grade
字段中没有值的文档将与具有值0
的文档归入同一存储桶。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。