这是我的数据源
ps: 这只是样本数据, 生产数据buckets的长度最大可达10000
所以前来问问各位大佬有没有解决方案
																				[
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 3587575,
      "date" : "2021-02-24T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 75848633,
      "date" : "2021-01-20T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 25308769,
      "date" : "2021-01-19T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 25308769,
      "date" : "2021-01-19T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 74256954,
      "date" : "2021-01-19T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 65945090,
      "date" : "2021-01-20T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 74256954
      "date" : "2021-01-19T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 2374066,
      "date" : "2021-01-20T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 64505236,
      "date" : "2021-01-19T00:00:00"
  },
  {
      "buyer_id_std" : 35444337,
      "seller_id_std" : 78976932,
      "date" : "2021-01-19T00:00:00"
  }
]查询语句GET trade/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "buyer_id_std": 35444337
          }
        },
        {
          "range": {
            "date": {
              "gte": "2020-09-06T00:00:00Z",
              "lte": "2021-09-06T00:00:00Z"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_stats": {
      "terms": {
        "field": "seller_id_std",
        "size": 2000
      }
    }
  },
  "size": 0,
  "track_total_hits": true
}得到"buckets" : [
    { "key" : 74256954, "doc_count" : 2},
    {
      "key" : 78976932,
      "doc_count" : 1
    },
    {
      "key" : 64505236,
      "doc_count" : 1
    }
  ]现在需求是能获取指定 buyer_id_std 在桶中的位置(排名),并且获取排在他后面的N位(后面没有时获取前面) 比如:64505236 这个在样本数据中是第三名,那么我需要得到  这个第三名的数字,而且还要获取到前面2个(如果后面有第四,第五...则获取后面的),最终我需要的数据是:ps: 这只是样本数据, 生产数据buckets的长度最大可达10000
[
    {
    "companny_id" : 74256954,
    "count" : 2,
    "rank": 1
    },
    {
      "companny_id" : 78976932,
      "doc_count" : 1,
      "rank": 2
    },
    {
      "companny_id" : 64505236,
      "count" : 1,
      "rank": 3
    }
  ]在我的知识库中, 这样的是没法做到的。 需要自己写代码循环出来。但是有点不死心,也找了es官方文档,并没有得到支持。所以前来问问各位大佬有没有解决方案
	
1 个回复
caster_QL
赞同来自:
只是你想在每个桶内加上一个排名字段,从1往后排是嘛?