Stats Aggregation
这是一种多值指标聚合,用于计算聚合文档提取值的统计数据。这些值既可通过文档的数字字段提取,也可通过脚本来生成。
该聚合返回的统计信息包括: min,max,sum,count,avg.
假设文档由学生的考试成绩(0~100)所组成:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : { "stats" : { "field" : "grade" } }
}
}
上面的聚合会计算所有文档的成绩统计数据。聚合类型是stats,聚合字段是grade.
上述聚合会返回如下结果:
{
...
"aggregations": {
"grades_stats": {
"count": 2,
"min": 50.0,
"max": 100.0,
"avg": 75.0,
"sum": 150.0
}
}
}
聚合名称(即上面的grades_stats)可作为检索聚合结果的key.
Script
也可基于脚本来统计成绩数据:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"script" : {
"lang": "painless",
"source": "doc['grade'].value"
}
}
}
}
}
这会使用painless脚本语言来将script参数解析为内联脚本(不带脚本参数).
可通过如下语法来使用存储脚本:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"script" : {
"id": "my_script",
"params" : {
"field" : "grade"
}
}
}
}
}
}
Value Script
事实证明,考试难度高于学生水平,需要进行等级校正。
我们可以使用值脚本来获取新的统计信息:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"field" : "grade",
"script" : {
"lang": "painless",
"source": "_value * params.correction",
"params" : {
"correction" : 1.2
}
}
}
}
}
}
Missing value
missing 参数用于定义如何处理文档中的缺失值.
默认,它会忽略缺失值,但也可以将其视为有值字段.
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"field" : "grade",
"missing": 0 #1
}
}
}
}
1.对于无值的grade字段,其所属文档会与值为0的文档放在同一个桶内。
全部指标聚合,请参考
单值指标聚合
多值指标聚合
地理位置相关聚合
可执行Map-Reduce计算的聚合
閱讀更多 Java源 的文章