2016-03-28 21 views
0

私の文書には次の値があります。弾性検索配列

"RETURNCODE":[ "0"、 "0"]
"RETURNCODE":[ "0"、 "1"]

私は0,0を検索する場合、それは第一の文書を返し、Iの場合必要があります0,1を検索すると2番目の文書が返されます。私は次のクエリで試していますが、正しい結果が得られていません。結果はすべての配列要素と一致する必要があります。

GET test/_search 
{ 
"query": { 
"filtered": { 
    "query": { 
    "match_all": {} 
    }, 
    "filter": { 
    "bool": { 
     "must": [ 
     { 
      "terms": { "ReturnCode":[ "0","1"] } 
     } 
     ] 

    } 
    } 
} 
} 
}  

おかげ

答えて

0

規約クエリはあなたがお返事のため

+0

おかげで上記のように必須の句内部の個々の用語のクエリを作成する必要がORクエリ

GET test/_search { "query": { "filtered": { "query": { "match_all": {} }, "filter": { "bool": { "must": [ { "term": { "ReturnCode":"0"} }, { "term": { "ReturnCode":"1"} } ] } } } } } 

です。 0,0で検索しようとすると、0.1レコードも取得されます。私が0.1で検索しているとき、それは正しく1レコードを引く。なぜなのかご存知ですか ? – Rakesh

+0

returnCodeは文字列であるため、フィールドのデフォルトのアナライザは「標準アナライザ」です。 '0.1'は '0'と '1'にトークン化されます。したがって、0と1の両方に一致します。 – Rahul

+0

これを避けるには、数値フィールドとしてマップするか、マッピングをnot_analyzedに設定するか、キーワードを – Rahul