使用elasticsearch中的列表进行排序

时间:2016-09-16 16:41:31

标签: elasticsearch

我有一个查询,我根据id列表向elasticsearch索取记录列表。例如

匹配:ids:[1,2,3]

是否有可能告诉elasticsearch按顺序将元素返回给我?我的id列表将是数百个,我将这些元素分成25个块。

如果我可以像

这样的话会很棒

{match:ids [1,2,3]  sort:ids [3,1,2}

任何建议都会非常有帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

如果可能,请使用Multi Get

POST /orderbyids/_mget
{
    "ids" : [12, 80, 44, 50]
}

另一种方法是使用动态脚本:

POST /orderbyids/_search
{
  "query": {
    "function_score": {
      "query": {
        "ids": {
          "values": [
            50,
            80,
            44,
            12
          ]
        }
      },
      "script_score": {
        "params": {
          "ids": [
              12,
              80,
              44,
              50
          ]
        },
        "script": "return -ids.indexOf(doc['id'].value.intValue());"
      }
    }
  }
}

已在关闭的issue中讨论了该功能。