我正在通过弹性搜索创建排行榜查询,我的文档具有父子关系, 家长文件:播放器 子文档:团队 一个玩家可以在多个团队中。
我正在计算每个团队的总得分,并使用存储桶排序对结果进行排序,而我得到的是正确的排序结果。
我想在排序结果中获得每个团队的排名,例如在每个存储桶值中的1000个团队总计结果中,我应该得到类似Rank:1的键,它是该值在1000个排序结果中的索引;
这是我目前的尝试:
{
"size": 0,
"query": {
"bool": {
"must": [
{
"term": {
"type": "contest_teams"
}
},
{
"term": {
"challenge_id": 212
}
}
]
}
},
"aggs": {
"team": {
"terms": {
"field": "user_id"
},
"aggs": {
"team_score": {
"parent": {
"type": "team_player"
},
"aggs": {
"total_points": {
"sum": {
"field": "points"
}
}
}
},
"team_points_bucket_sort": {
"bucket_sort": {
"sort": [
{
"team_score.total_points": {
"order": "desc"
}
}
],
"size": 2,
"from": 0
}
}
}
}
}
}