term
Die Abfrage entspricht einem einzelnen Begriff: Der Wert wird nicht analysiert . Es muss also nicht in Kleinbuchstaben geschrieben werden, je nachdem, was Sie indiziert haben.
Wenn Sie Bennett
zum Indexzeitpunkt angegeben haben und der Wert nicht analysiert wird, gibt die folgende Abfrage nichts zurück:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
Die Abfrage analysiert die Eingabe, wenn Analysatoren für das abgefragte Feld definiert sind, und findet Dokumente, die den folgenden Kriterien entsprechen:
- Alle Begriffe müssen im Feld erscheinen
- Sie müssen dieselbe Reihenfolge wie der Eingabewert haben
Wenn Sie beispielsweise die folgenden Dokumente indizieren (mit dem standard
Analysator für das Feld foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Diese match_phrase
Abfrage gibt nur das erste und das zweite Dokument zurück:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
Abfragesuche standardmäßig in einem _all- Feld, das den Text mehrerer Textfelder gleichzeitig enthält. Darüber hinaus wird es analysiert und unterstützt einige Operatoren (AND / OR ...), Platzhalter usw. (siehe zugehörige Syntax) ).
Während der match_phrase
Abfragen wird die Eingabe gemäß dem auf dem abgefragten Feld eingestellten Analysator analysiert.
Im Gegensatz zu müssen die match_phrase
nach der Analyse erhaltenen Begriffe nicht in derselben Reihenfolge sein, es sei denn, der Benutzer hat Anführungszeichen um die Eingabe verwendet.
Wenn Sie beispielsweise dieselben Dokumente wie zuvor verwenden, werden bei dieser Abfrage alle Dokumente zurückgegeben:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Diese Abfrage gibt jedoch dieselben 2 Dokumente wie die match_phrase
Abfrage zurück:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Zu den verschiedenen Optionen für diese Abfragen gibt es noch viel mehr zu sagen. Schauen Sie sich bitte die zugehörige Dokumentation an:
Hoffe das ist klar genug und es wird helfen.
match
Abfrage verwenden Sie den Analysator, wenn das Feld analysiert wird, also ja. Standardmäßig werden Dokumente mit mindestens einem der Begriffe (siehe Parameteroperator
) zurückgegeben, und die Reihenfolge ist nicht wichtig.Ich denke, jemand sucht definitiv nach Unterschieden zwischen ihnen in Bezug auf PARTIAL SEARCH. Hier ist meine Analyse mit dem Standard -Standardanalysator : -
{"name": "Hallo"}
Was ist nun, wenn wir eine Teilsuche mit ell durchführen möchten?
Funktioniert nicht.
Funktioniert nicht.
Schlussfolgerung - Term oder Match kann überhaupt keine Teilsuche durchführen
Funktioniert Ergebnis {"Name": "Hallo"}
Funktioniert nicht.
Fazit - Wildcard kann nur mit einem Token teilweise suchen
Wird funktionieren geben Ergebnis {"Name": "Hallo"}
Funktioniert das Ergebnis {"Name": "Hallo"}.
Fazit - query_string kann mit zwei Token suchen
-> hier sind Token ell und zz
quelle
wildcard is able to do partial search with one token only
: Genauer gesagtwildcard
funktionieren Abfragen standardmäßig nur fürkeyword
Felder , die per Definition ein einzelnes Token sind. Das hat nichts damit zu tun, dass der Feldinhalt mehr als ein Wort ist. In Ihrer Platzhalterabfrage würde "ozzy hello" übereinstimmen.