2017-06-19 4 views
0

特定のIDの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'を使う必要があります、もう一度やり直してください。 – Val

+0

はい、それは動作します!ありがとうございました! –

関連する問題