2015-12-07 190 views
0

我正在为当前项目进行弹性搜索。我正在使用基于关键字词的功能。和我的查询如下弹性搜索中的高级查询

$query = array("from" => 0, 
      "size" => 20, 
      "query" => array(
       "filtered" => array(
        "query" => array("match" => array('_all' => trim(strtolower($keyword)))) 
     ))); 
     $result = $this->elasticsearch->advancedquery("services", json_encode($query)); 

如果用户输入他的关键字它来到$关键字和搜索“服务”类型。这个功能工作正常。但我想在多种类型中搜索该关键字。即 在我的索引中,我有两种类型的“产品”和“服务”。 我需要在两种类型中搜索我的关键字。

回答

0

使用multi_match

{"query" : {"multi_match" : {"query": $keyword,"fields": [ "products", "services" ]}}} 
+0

您好@Alainlb,在上述的问题,我使用的 “advancedquery”。用于类型服务。是否有任何替代查询(如advancedquery)for multi_match。 –

+0

对不起,我不知道,我不使用你的elasticsearch角度图书馆。该查询不起作用? – AlainIb

+0

是的,但我的问题解决了。我已单独采用“高级查询”,即只有 $ this-> elasticsearch-> advancedquery(“services”,json_encode($ query)); $ this-> elasticsearch-> advancedquery(“products”,json_encode($ query));最后我将总结果合并成一个数组。 –