2017-10-06 13 views
0

AND条件で複数のフィールドを検索したい。私は多くの方法を試みましたが、私は結果を生成することができません。弾性検索のAND条件を使用したマルチマッチクエリph

以下は私のコードです。

"query" =>[ 
        "multi_match" => [ 
        "fields" => ["prod_name", "prod_seo_name"], 
        "type" => "phrase_prefix", 
        "query" => $query 
        ], 
        "bool" => [ 
         "must" => [ 
         "term" => [ "cat_type_id" => 1 ], 

        ], 
       ], 
      ], 

私は、そのcat_type_idがある製品名で検索します。

私も次のように試しました。

"query" =>[ 
          "multi_match" => [ 
          "fields" => ["prod_name", "prod_seo_name"], 
          "type" => "phrase_prefix", 
          "query" => $query 
        ], 
        "filter" => [ 
         "term"=> ["cat_type_id"=>1] 
        ] 

参考または参考になるとよいでしょう。

答えて

1

それを行うための正しい方法は、このようなものです:

"query" => [ 
    "bool" => [ 
     "must" => [ 
     [ 
       "multi_match" => [ 
        "fields" => ["prod_name", "prod_seo_name"], 
        "type" => "phrase_prefix", 
        "query" => $query 
       ] 
     ], 
     [ 
       "term"=> ["cat_type_id"=>1] 
     ] 
     ] 
    ] 
] 
+0

が、私はこの中に複数の用語を追加することができます。 AND演算子のような?余分なフィルターを渡したいのですが、どのように達成できますか?任意の参照plz – mayur

+0

もちろんできます。良い出発点は、参考資料です:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html – Val

関連する問題