2017-06-08 111 views
0

在彈性搜索中,我們有函數:setDefaultOperator。彈性搜索:首先匹配另一個匹配

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

上面只給出精確匹配。

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

上面給出了所有的比賽。(但不是精確匹配第一)

我需要精確匹配第一個,然後其他的比賽。任何想法?

我第一次使用彈性搜索。任何幫助將不勝感激。

回答

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" 
    } 
    } 
} 
看看完整的例子
相關問題