Was ist eine Boolesche Abfrage in Elasticsearch

Was ist eine Boolesche Abfrage in Elasticsearch

Boolesche oder eine Bool -Abfrage in Elasticsearch ist eine Art von Suche, mit der Sie die Bedingungen mit booleschen Bedingungen kombinieren können.

ElasticSearch sucht das Dokument im angegebenen Index und gibt alle Datensätze zurück, die der Kombination von booleschen Klauseln entsprechen.

Mit Booleschen Abfragen können Sie spezifischere Parameter filtern, sodass Sie genauere Ergebnisse erzielen können.

In diesem Artikel werden wir uns untersuchen.

Allgemeine Syntax

Die allgemeine Syntax einer in Elasticsearch verwendeten Booleschen Abfrage lautet:

_Search

"Anfrage":
"bool":
"muss": [

],
"darf nicht": [

],
"sollen": [

],
"Filter": [

]

Sie müssen nicht alle booleschen Vorkommen in einer einzelnen Abfrage kombinieren. Sie können jeweils als eigenständige Einheit verwenden.

Boolescher Muss

Nehmen wir an, Sie haben einen Index mit Weblogs. Wir können die Dokumente abrufen, in denen das Betriebssystem ein Windows -Computer ist. Unten finden Sie eine Beispielabfrage:

Get /kibana_sample_data_logs /_search

"Anfrage":
"bool":
"muss": [
"Begriff":
"Maschine.os ":
"Wert": "Win"


]


Wie in der Beispielantwort gezeigt, sollte das obige Ergebnis die Werte zurückgeben, bei denen das Betriebssystem Windows ist.

Boolean must_not

In ähnlicher Weise können wir das Auftreten von Must_Not verwenden, um den Begriff zu entfernen, bei dem das Betriebssystem Windows ist.

Nehmen Sie die Beispielabfrage unten:

Get /kibana_sample_data_logs /_search

"Anfrage":
"bool":
"darf nicht": [
"Begriff":
"Maschine.os ":
"Wert": "Win"


]


Diese Abfrage filtert alle Datensätze, in denen die Maschine.OS ist ein Windows -Computer. Unten ist ein Beispielergebnis:

Boolescher Filter

Der Boolesche Filter wird alle Dokumente entfernen, die nicht mit der angegebenen Bedingung übereinstimmen.

Zum Beispiel können wir die Protokolle filtern, in denen die Anzahl der Bytes größer als 1000 beträgt.

Wir können eine Abfrage wie unten gezeigt ausführen:

Get /kibana_sample_data_logs /_search

"Anfrage":
"bool":
"Filter": [
"Bereich":
"Bytes":
"gte": 10000


]


Die Antwort sollte nur die Dokumente enthalten, in denen die Anzahl der Bytes größer ist als der festgelegte Wert.

Beispielantwort:

Sie können auch einen Filter mit anderen booleschen Vorkommen kombinieren. Zum Beispiel suchen wir zuerst nach übereinstimmenden Dokumenten, bei denen das Betriebssystem gewinnt, und filtern dann die Anzahl der Bytes von mehr als 10000.

Holen Sie sich Kibana_Sampel_Data_logs/_SEARCH

"Anfrage":
"bool":
"muss": [
"Begriff":
"Maschine.os ":
"Wert": "Win"


],
"Filter": [
"Bereich":
"Bytes":
"gte": 10000


]


In diesem Fall holen wir zuerst die Dokumente, in denen das Betriebssystem den Begriff „Gewinn“ enthält, zuerst. Wir verwenden dann die Ergebnisse und filtern für die Anzahl der Bytes über 10000.

Die resultierenden Dokumente ähneln dem unten gezeigten:

Boolean sollte

Das endgültige boolesche Ereignis, das Sie verwenden können, ist das sollte das sollte. Das sollte sehr ähnlich wie Must, aber es ist weniger streng.

Holen Sie sich Kibana_Sampel_Data_logs/_SEARCH

"Anfrage":
"bool":
"sollen": [
"passen":
"Maschine.OS ":" OSX "

]


Das Beispiel sollte die Datensätze zurückgeben. Die Zeichenfolge "OSX" wird im Feld OS angezeigt.

Abschluss

In diesem Artikel haben Sie erfahren.