2012-11-13 13 views
6

user_id'1'で、name'John'であるデータを照会したいと思います。これは、一般的に使用されるSQL書くのは簡単です:2つの一致クエリをelasticsearchのクエリに結合するにはどうすればよいですか?

select * from t where user_id = '1' and name = 'John'; 

をしかし、私はelasticsearchのクエリを作成することは簡単ではありません。

まず、私はuser_idのクエリ製:

{ 
    "query" : { 
    "match" : { 
     "user_id" : "1" 
    } 
    } 
} 

を、結果は私が期待したものでした。

はその後、私はnameのクエリを作った:

{ 
    "query" : { 
    "match" : { 
     "name" : "John" 
    } 
    } 
} 

それはあまりにも、うまく働きました。

しかし、私は2つの条件と操作を結合するクエリを作成できませんでした。どのようにして2つの一致クエリを1つの操作と操作に結合できますか?あなたが必要なもの

答えて

11

は、すべてのあなたの単一のクエリを入れているbool queryです:

(私はそれが間違っているかもしれません、クエリをテストすることができませんでしたが、ブールクエリはあなたの問題への答えです)

{ 
    "bool" : { 
     "must" : [{ 
      "match" : { 
       "user_id" : "1" 
      }, 
      "match" : { 
       "name" : "John" 
      } 
     }] 
    } 
} 
+0

FYIブールクエリのドキュメントが移動している[ここ](http://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html) –

+0

はあなたに感謝します。 elasticsearchの人は真剣にそのリダイレクトを追加する必要があります – Thorsten

関連する問題