2016-08-05 10 views
0

私はESを初めて使い、複数の用語で検索するように設定する必要があります。弾性検索で複数の語を検索する

私のSQLは次のようになります。ESで

"SELECT field4 FROM tablename WHERE (field1 = 'A' OR field1 = 'AA') AND (field2 = 'B' OR fields2 = 'BB') AND (field3 = 'C' OR field3 = 'CC')" 

私はあなたが最も可能性が高い欲しい

{ 
"query": { 
"bool": { 
    "must": [ 
    { 
     "term": { 
     "field1": {"A","AA"} 
     } 
    }, 
    { 
     "term": { 
     "field2": {"B","BB"} 
     } 
    }, 
    { 
    "term": { 
     "field3": {"C","CC"} 
    } 
    } 
    } 
} 
} 

答えて

2

をしようとしているtermsクエリです。あなたはここにそれのためのマニュアルを参照してくださいすることができます:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html

そのサイトからの例は次のとおりです。

{ 
    "terms" : { "user" : ["kimchy", "elasticsearch"]} 
} 

はまた、あなたのクエリが今有効なJSON、あなたはそれを修正する必要がありますではありません。

+0

私は以下を試みましたが、まだ動作していません:{"from":0、 "size":200、 "query":{"bool":{"must":{"bool":{"must" ["bool":{"フィールド": "{"フィールド "2": "1"}} {"用語":{"フィールド2": "4"}}}}}、{"bool" ":{"フィールド ":" 3 "}}}}]}}}}} – user954134

+0

何ができますか?あなたは「働いていない」という意味ですか?クエリを実行した結果はどうなりますか?それはエラーですか、まったくゼロの結果を返しますか?後者の場合は、クエリに一致するドキュメントがない可能性があります。あなたがelasticsearchクラスタ内にあるドキュメントをダブルチェックし、より簡単なクエリを実行してドキュメントが存在し、クエリを正しく実行していることを確認してください。 – Phil