2017-06-19 59 views
0

我想使用特定類型的ID獲取文檔。例如,現在我已經在Sense中編寫了這個查詢。此查詢將返回類型產品中帶有這些id的所有文檔。在elasticsearch中搜索多種類型的多個ID

POST /_search 
    { 
     "query": { 
      "ids" :{ 
       "type" : "product", 
       "values" : ["100005","10002010093"] 
     } 
     } 
    } 

但我想要的這裏是這樣

POST /_search 
     { 
      "query": [ 
      { 
       "ids" :{ 
        "type" : "product", 
        "values" : ["100005","10002010093"] 
      } 
      }, 
      { 
       "ids" :{ 
        "type" : "store", 
        "values" : ["100003","1000201"] 
      } 
      } 
     ] 
     } 

POST /_search 
     { 
      "query":{ 
       "ids" :[ 
        { 
        "type" : "product", 
        "values" : ["100005","10002010093"] 
        }, 
        { 
        "type" : "store", 
        "values" : ["100003","1000201"] 
        } 
       ] 
      } 
     } 

有沒有辦法把它做?

回答

1

你只需要使用bool/filter query

POST /_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "ids": { 
      "type": "product", 
      "values": [ 
       "100005", 
       "10002010093" 
      ] 
      } 
     }, 
     { 
      "ids": { 
      "type": "store", 
      "values": [ 
       "100003", 
       "1000201" 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
+0

它不能正常工作,它返回此響應。 '{ 「花」:13, 「TIMED_OUT」:假的, 「_shards」:{ 「總」:25, 「成功」:25, 「失敗」:0 }, 「點擊」 :{ 「總」:0, 「MAX_SCORE」:空, 「點擊」:[] } }' 而且我相信,我所提供的ID存在。 –

+0

我的不好,你需要使用'should'而不是'filter',請重試。 – Val

+0

現在可以使用了!謝謝! –

相關問題