原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-avg-aggregation.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/search-aggregations-metrics-avg-aggregation.html
本地英文版地址: ../en/search-aggregations-metrics-avg-aggregation.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
single-value(单值)度量聚合,计算从聚合文档中提取的数值的平均值。
这些值可以从文档中指定的 numeric 字段中提取,也可以由给定的脚本生成。
假设数据由代表学生考试成绩(0到100之间)的文档组成,我们可以用以下公式计算他们的平均分数:
POST /exams/_search?size=0
{
"aggs" : {
"avg_grade" : { "avg" : { "field" : "grade" } }
}
}
上面这个聚合计算所有文档的平均分数。
聚合类型为 avg,field 设置定义了计算平均值所依据的文档的 numeric 字段。
上面的查询请求将返回以下内容:
{
...
"aggregations": {
"avg_grade": {
"value": 75.0
}
}
}
聚合的名称(上例中用的是avg_grade)也用作key,通过该 key 可以从返回的响应中检索聚合结果。
基于脚本计算平均分数:
POST /exams/_search?size=0
{
"aggs" : {
"avg_grade" : {
"avg" : {
"script" : {
"source" : "doc.grade.value"
}
}
}
}
}
这将把 script 参数解释为一个inline(内联)脚本,使用painless(无痛) 脚本语言,没有脚本参数。
要使用已存储的脚本,请使用以下语法:
POST /exams/_search?size=0
{
"aggs" : {
"avg_grade" : {
"avg" : {
"script" : {
"id": "my_script",
"params": {
"field": "grade"
}
}
}
}
}
}