2017-06-08 2 views
0

In der elastischen Suche haben wir Funktion: setDefaultOperator.Elastische Suche: Get Exact Match zuerst das andere Spiel

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

Oben gibt nur exakte Übereinstimmung.

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

gibt vor allem Begegnungen. (Aber nicht exakt erstes entspricht)

ich zuerst, dann anderes Match genaue Übereinstimmung benötigen. Irgendeine Idee?

Ich verwende Elastic Search zum ersten Mal. Jede Hilfe wird geschätzt.

Antwort

0

Wenn Sie dies mit query_string tun möchten, müssen Sie den Standardoperator definieren, um den Standardoperator OR zu ändern.

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

haben einen Blick vollständiges Beispiel unter Verwendung von 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" 
    } 
    } 
}