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.