制图:
player_id: int
stat_date: date
some_param: int
我需要计算每个player_id使用行的“some_param”的平均值,如果有几行具有相同的player_id,则使用max“stat_date”。
所以我需要所有玩家的最后日期的平均值
由于“[avg]类型的聚合器[average_val]无法接受子聚合,因此该片段无法正常工作”
get test/test/_search
{
"size":0,
"aggs": {
"average_val":{
"avg": {
"field": "some_param"
},
"aggs": {
"by_player": {
"terms": { "field" : "player_id" },
"aggs" : {
"by_date" : {
"max" : { "field" : "stat_date" }
}
}
}
}
}
}
}
最简单的方法是使用简单的平均值
get test/test/_search
{
"size":0,
"aggs": {
"averages": {
"avg": {
"field": "some_param"
}
}
}
}
但是我只需要为最后的统计日期计算平均玩家“some_param”。
我想你只需要颠倒聚合的顺序。将avg聚合放在最深的聚合中,它应该可以正常工作。
有两种主要的聚合类型。 Avg是度量标准聚合,它输出指标(数字)。您需要在外部放置Bucket Aggregations(如术语聚合),并为其输出执行指标聚合。