弹性搜索:首先获得完全匹配另一个匹配

时间:2017-06-08 12:13:00

标签: elasticsearch

在弹性搜索中我们有函数:setDefaultOperator。

$query->setDefaultOperator('AND')->setFields(array('keyword'));

以上仅提供完全匹配。

$query->setDefaultOperator('OR')->setFields(array('keyword'));

上面给出了所有匹配。(但不是完全匹配)

我首先需要完全匹配然后是其他匹配。有什么想法吗?

我第一次使用弹性搜索。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您想使用query_string执行此操作 那么你必须定义默认运算符才能更改默认运算符OR。

  

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

使用Kibana

查看下面的完整示例
PUT /phone/brand/1
{
  "color" : "black",
  "name" : "Samsung"
}

PUT /phone/brand/2
{
  "color" : "black",
  "name" : "Iphone"
}

PUT /phone/brand/3
{
  "color" : "white",
  "name" : "Samsung"
}

//query string 
GET /phone/brand/_search
{
  "query": {
    "query_string": {
      "fields": ["color","name"], 
      "default_operator": "AND", 
      "query": "Samsung black"
    }
  }
}