2017-10-04 1 views
0

Ich versuche Suche mit Elastic Suche zu implementieren, aber einige prob mit:Elasticsearch mit UND-Bedingung

Was Ich habe

Ich versuche Elasticsearch zur Umsetzung Ich habe 2 Felder, die sind:

1) Suchbegriff (TextField-)

2) Stadt Name (Textfeld)

N Was ich hier möchte, ist, wenn der Benutzer beide Werte eingibt, dann muss er mit beiden suchen (UND-Bedingung), sonst, wenn der Benutzer den Suchbegriff eingibt, dann sucht er nur den Suchbegriff oder wenn Stadt dann nur Stadt sucht.

Was ich tue

"bool" : { 
"should": [ 
    { 
    "multi_match": { 
     "query": '"'+keyword.toLowerCase()+'"', 
     "fields": 
     [ 
      "title", "desc" 
     ] 
    } 
    }, 
    { 
    "match": 
    { 
     "city": city.toLowerCase() 
    } 
    } 
], 

}

aber es funktioniert nicht mit der Suche ist OR.

Jede Hilfe sehr geschätzt.

Vielen Dank im Voraus

Randheer

+0

Sie können Abfrage String für diese https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html suchen. –

Antwort

0

Wenn Sie alle Bedingungen wünschen angepasst werden können „Muss“ statt „sollte“ verwenden.

+0

Wenn ich es verwenden muss, wird es nicht nur mit Stadt arbeiten, ich möchte, wenn Benutzer Stadt eingeben, dann funktioniert es nur mit Stadt –

+0

Wenn Sie meinen, dass "Übereinstimmung" Abfrage ein Problem innerhalb eines Muss ist, könnten Sie es mit Begriff ersetzen oder Wildcard-Abfrage je nach Bedarf. –