elasticsearch,Php,elasticsearch" /> elasticsearch,Php,elasticsearch" />

Php ElasticSearch中的Like查询

Php ElasticSearch中的Like查询,php,elasticsearch,Php,elasticsearch,如何在elasticsearch查询中使用like查询 这就是我到目前为止一直在尝试的 array:3 [ "index" => "users" "type" => "user" "body" => array:1 [ "query" => array:1 [ "bool" => array:1 [ "should" => array:1 [ 0 => array:3 [ 0 => array:1 [

如何在elasticsearch查询中使用like查询

这就是我到目前为止一直在尝试的

array:3 [
"index" => "users"
"type" => "user"
"body" => array:1 [
"query" => array:1 [
  "bool" => array:1 [
    "should" => array:1 [
      0 => array:3 [
        0 => array:1 [
          "match" => array:1 [
            "fullname" => "Mag*"
          ]
        ]
        1 => array:1 [
          "match" => array:1 [
            "industry_name" => "other"
          ]
        ]
        2 => array:1 [
          "match" => array:1 [
            "active" => "yes"
           ]
         ]
       ]
     ]
     ]
     ]
   ]
   ]
我的搜索json是这样的

{"1": "Mag","industry_name":"other", "active": "yes"}
在我的索引中,有一个全名“Maggie Wilfred”的记录。 当我运行此查询时,不会返回任何内容


有什么原因吗?我觉得问题出在外卡上<代码>“全名”=>“Mag*”

它应该可以工作,请按以下方式尝试:

    {
        "wildcard" : { "fullname" : "Mag*" }
    }

匹配查询不支持上所述的通配符


您应该尝试使用通配符查询。

实际上,这取决于。。如果查询where语句如下所示您将得到0个结果,但如果是查询语句,您应该会得到结果,因为它将得到所有开始的全名
Mag
@sgtBOSE:我已经列出了查询语句above@DrixsonOse尼娜:你能解释一下吗confused@DamForums你知道
如何匹配
有效吗?@DrixsonOseña:
match
将充当
=
我认为根据这个链接,我们可以,我在这个链接中没有看到任何说明它有效的东西。事实上,用户使用了三种不同类型的查询,第一种是100%匹配,第二种是带前导和尾随*的通配符匹配,最后一种是模糊搜索(当您错误地说出某些内容时)。您的意思是,我不能在同一查询中使用通配符和匹配。是吗?是的,如果您的术语需要通配符友好,则必须使用与匹配查询不同的查询。您能给出更好的建议吗?|:$match[]=array('wildcard'=>array('fullname'=>'Mag*');如果我这样放,它就不起作用了
{
    "prefix" : { "fullname" : "Mag" }
}