2017-10-06 3 views
0

Je souhaite effectuer une recherche sur plusieurs champs avec la condition AND. J'ai essayé plusieurs façons, mais je ne suis pas capable de générer des résultats.Requête multi-correspondance avec la condition ET dans la recherche élastique php

ci-dessous est mon code.

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

        ], 
       ], 
      ], 

Je veux chercher avec nom du produit dont cat_type_id est .

J'ai essayé aussi.

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

Toute aide ou référence serait bien.

Répondre

1

La bonne façon de le faire est comme ceci:

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

Puis-je ajouter plusieurs termes dans ce domaine. comme opérateur AND? et si je veux passer des filtres supplémentaires comment pourrais-je réaliser? Toute référence plz – mayur

+0

Bien sûr que vous pouvez. Un bon point de départ serait la documentation de référence: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html – Val