termDie 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 Bennettzum 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 standardAnalysator für das Feld foo):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Diese match_phraseAbfrage gibt nur das erste und das zweite Dokument zurück:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_stringAbfragesuche 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_phraseAbfragen wird die Eingabe gemäß dem auf dem abgefragten Feld eingestellten Analysator analysiert.
Im Gegensatz zu müssen die match_phrasenach 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_phraseAbfrage 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.