2016-09-16 64 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