如何对存储桶排序结果进行排名?

时间:2020-03-04 11:29:30

标签: elasticsearch

我正在通过弹性搜索创建排行榜查询,我的文档具有父子关系, 家长文件:播放器 子文档:团队 一个玩家可以在多个团队中。

我正在计算每个团队的总得分,并使用存储桶排序对结果进行排序,而我得到的是正确的排序结果。

我想在排序结果中获得每个团队的排名,例如在每个存储桶值中的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
          }
        }
      }
    }
  }
}

0 个答案:

没有答案