2016-09-16 69 views
0

我有一个查询,其中我要求基于ID列表的记录列表弹性搜索。例如elasticsearch中的列表排序

比赛:IDS:[1,2,3]

是否可以告诉elasticsearch返回元素,我的顺序?我的ID的名单将在数百,我在分页25.

块的元素这将是巨大的,如果我可以这么像

{匹配:IDS [1,2,3] 类别:ids [3,1,2}

任何建议将是非常有益的。谢谢!

回答

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了讨论。

+0

真棒很多谢谢! – jdkealy