平均值聚合(Avg Aggregation)
single-value计量聚合操作就是从聚合文本中提取的数据进行求平均数的操作。这些值可以是从文本具体的数值属性中提取的值,也可以是使用脚本生成的。
假设这个数据都是有学生的考试成绩(0-100)的文档组成:
1
{
2
"aggs" : {
3
"avg_grade" : { "avg" : { "field" : "grade" } }
4
}
5
}
Copied!
上面的聚合操作就是计算所有文档的平均值。这个聚合操作的类型是avg,并且使用field来定义要计算文档中的属性。如下所示:
1
{
2
...
3
4
"aggregations": {
5
"avg_grade": {
6
"value": 75
7
}
8
}
9
}
Copied!
聚合操作的名可以也可以作为聚合操作返回的关键字(例如上面的avg)。

Script

使用脚本计算平均值:
1
{
2
...,
3
4
"aggs" : {
5
"avg_grade" : {
6
"avg" : {
7
"script" : {
8
"inline" : "doc['grade'].value",
9
"lang" : "painless"
10
}
11
}
12
}
13
}
14
}
Copied!
将会解释script参数作为无并发脚本语言和无脚本参数的内联脚本。一个文件脚本中包含如下参数和语法规范:
1
{
2
...,
3
4
"aggs" : {
5
"avg_grade" : {
6
"avg" : {
7
"script" : {
8
"file": "my_script",
9
"params": {
10
"field": "grade"
11
}
12
}
13
}
14
}
15
}
16
}
Copied!
在索引脚本文件中可以使用id参数取代file参数。

Value Scripts

事实证明考试是高于学生的水平的需要对学生的成绩进行校对。我们可以使用下面的脚本获取新的平均数:
1
{
2
"aggs" : {
3
...
4
5
"aggs" : {
6
"avg_corrected_grade" : {
7
"avg" : {
8
"field" : "grade",
9
"script" : {
10
"lang": "painless",
11
"inline": "_value * params.correction",
12
"params" : {
13
"correction" : 1.2
14
}
15
}
16
}
17
}
18
}
19
}
20
}
Copied!

Missing Value

这个missing参数就是定义文档怎样处理缺省的文档。默认情况下,它们会被忽略,也可以视它们为具体指。
1
{
2
"aggs" : {
3
"grade_avg" : {
4
"avg" : {
5
"field" : "grade",
6
"missing": 10
7
}
8
}
9
}
10
}
Copied!
在文档中,如果grade这个属性没有的值话,就会默认为10.
Last modified 2yr ago