Elasticsearch Range Query Tutorial

Elasticsearch Range Query Tutorial
In Elasticsearch können wir die Ergebnisse von Dokumenten erhalten, die mit der Bereichsabfrage mit einem bestimmten Bereich übereinstimmen.

In diesem Leitfaden lernen Sie, einen Bereich in Ihrer Suchabfrage unter Verwendung von booleschen Ausdrücken wie größer als, weniger als und mehr zu definieren.

Elasticsearch Range Abfrage: Grundnutzung

Um einen bestimmten Bereich in einer Suchabfrage anzugeben, können wir den Bereich des Bereichs verwenden, gefolgt vom Feld und den Bedingungen zur Überprüfung.

Nehmen Sie die folgende Abfrage, die die Dokumente zurückgibt, in denen das Feld avgTicketprice größer als 600 und weniger als 800 ist

Get /kibana_sample_data_flights /_search

"Anfrage":
"Bereich":
"AvGticketprice":
"gte": 600,
"LTE": 800



Unten finden Sie die Beispiele der Rückgabeergebnisse:

Die Abfrage verstehen

Im obigen Beispiel setzen wir den Bereich in der Abfrage fest. Das Schlüsselwort des Bereichs erfordert den Feldparameter, der das Feld für die Suche definiert.

Anschließend definieren wir den Parameter für das Feld. Dies sind boolesche Bedingungen wie:

  1. gt - größer als
  2. gte - größer als oder gleich zu
  3. lt - weniger als
  4. LTE - weniger oder gleich zu

Abfragen eines Zeitbereichs

Wenn das Feld, das Sie suchen möchten, vom Datum vom Typ ist, können Sie die oben genannten Bedingungen verwenden, gefolgt von der in der folgenden Ressource definierten Datum Mathematik:

Elasticsearch Datum Mathematikdocs

Betrachten Sie den folgenden Wert, der den Parameter Time_zone verwendet, um die Zeit in den UTC -Wert zu konvertieren und nach einem Bereich zu suchen.

Get /kibana_sample_data_flights /_search

"Anfrage":
"Bereich":
"Zeitstempel":
"time_zone": "+03: 00",
"gte": "2021-10-14t05: 22: 14",
"LTE": "Jetzt"



Die obige Abfrage sollte die Dokumente zurückgeben, in denen der Zeitstempel um 05:22:14 größer als 2021-10-14 ist.

Hier sind Beispielergebnisse:

NOTIZ: time_zone wirkt sich nicht auf den jetzt Parameter aus.

Größer als

Sie müssen nicht die Bedingungen kombinieren, wie beispielsweise größer als und weniger als; Sie können einen einzelnen Bereich verwenden, wie im folgenden Beispiel gezeigt:

Get /kibana_sample_data_flights /_search

"Anfrage":
"Bereich":
"Distancemiles":
"gte": 10000



Das obige Beispiel gibt die Dokumente zurück, in denen die Distanzile größer als 10000 sind.

Die Antwort ist unten:

Boolean

Um einen Bereich zu überprüfen, in dem der Feldtyp ein boolescher Wert ist, können Sie LTE oder GTE verwenden. Um beispielsweise die Dokumente für stornierte Flüge zu erhalten, können wir eine Anfrage als:

Get /kibana_sample_data_flights /_search

"Anfrage":
"Bereich":
"Abgesagt":
"gte": wahr



Im obigen Beispiel verabschieden wir uns mit dem Bereich, um als Boolescher wahr zu überprüfen.

Die Ergebnisse sind wie gezeigt:

Schließen

In diesem Handbuch haben Sie gelernt, wie man die Range -Abfrage in Elasticsearch verwendet, um nach Ergebnissen zu filtern, die einem bestimmten Bereich entsprechen.