在弹性搜索php中使用AND条件的多匹配查询

时间:2017-10-06 05:47:47

标签: php elasticsearch

我想用AND条件搜索多个字段。我尝试了很多方法,但我无法生成结果。

下面是我的代码。

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

                     ],
                ],
            ],

我想使用产品名称进行搜索, cat_type_id 1

我也试过了。

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

任何帮助或参考都会很棒。

1 个答案:

答案 0 :(得分:2)

正确的方法是这样的:

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