Wie filtere ich Elasticsearch -Ergebnisse??

Wie filtere ich Elasticsearch -Ergebnisse??
Standardmäßig verwendet Elasticsearch eine Relevanzbewertung, um die Ergebnisse aus einer Suchabfrage zu sortieren. Eine Relevanzbewertung bestimmt, wie relevant ein Dokument ist, abhängig von den abgefragten Daten.

Wir können jedoch Filter anwenden, um die relevanten Dokumente einzugrenzen und zu maximieren, die von einer Abfrage zurückgegeben wurden.

In diesem Leitfaden lernen Sie, wie Sie Bedingungen in einer Elasticsearch -Abfrage anwenden, um genauere Abfragenergebnisse herauszufiltern.

Filter nach Begriff

Wir können den Begriff Abfrage verwenden, um Ergebnisse in einer Abfrage herauszufiltern. Beispielsweise filtert die folgende Abfrage Dokumente, in denen der Stadtname New York ist.

Get /kibana_sample_data_ecommerce /_search

"Anfrage":
"bool":
"Filter": [
"Begriff":
"Geoip.City_Name ":" New York "

]


In der obigen Beispielabfrage verwenden wir einen booleschen Filter, um nach Dokumenten zu suchen, die mit dem City_Name als „New York) übereinstimmen.”

Das Beispielergebnis dafür ist:

Mehrere Begriffe

Sie können auch Dokumente mit zwei oder mehr Begriffen übereinstimmen. Zum Beispiel können wir nach Datensätzen abfragen, wobei der Typ = Order und Region = „New York“

Get /kibana_sample_data_ecommerce /_search

"Anfrage":
"bool":
"Filter": [
"Begriff":
"Typ": "Bestellung"
,

"Begriff":
"Geoip.Region_Name ":" New York "


]


In einem solchen Beispiel sowohl der Typ als auch Geoip.Region_Name Fields müssen dem durchsuchten Begriff treu bewerten.

Beispielergebnis:

Bereichsfilter

Um durch einen numerischen Wert zu filtern, können Sie boolesche Bedingungen verwenden. Um beispielsweise nach Ergebnissen zu filtern, bei denen der Preis des Produkts größer als 1000 ist, können wir dies tun:

Get /kibana_sample_data_ecommerce /_search

"Anfrage":
"bool":
"Filter": [
"Bereich":
"Produkte.Grundpreis":
"gte": 1000


]

Die obige Abfrage sollte die Dokumente filtern, in denen das Basispreis der Elemente größer oder gleich 1000 ist.

Hier sind einige Beispielergebnisse:

Filter durch Phrase

Angenommen, Sie erinnern nur an eine bestimmte Phrase und möchten nicht alle Dokumente im Index abrufen? Sie können Must und Match_Phrase verwenden, um die Ergebnisse einzugrenzen.

Was ist zum Beispiel, wenn wir nur die Produkte in die Kategorie der Männer bringen möchten, aber uns nicht sicher sind, dass alle spezifischen Typen sichtbar sind? Wir können eine Frage ausführen als:

Get /kibana_sample_data_ecommerce /_search

"Anfrage":
"bool":
"muss": [
"match_phrase":
"Produkte.Kategorie ":" Männer "

]


Im obigen Beispiel verwenden wir den Booleschen Muss, um sicherzustellen, dass der übereinstimmende Ausdruck dem angegebenen entspricht.

Unten finden Sie Beispielergebnisse:

Darf nicht filtern

Wir können auch den Must_Not -Filter verwenden, um alle Dokumente zu entfernen, die einen bestimmten Ausdruck oder einen bestimmten Bereich enthalten. Um beispielsweise alle Dokumente auszuschließen, an denen das Kaufdatum Montag ist, können wir dies tun:

Get /kibana_sample_data_ecommerce /_search

"Anfrage":
"bool":
"darf nicht": [
"passen":
"Day_of_week": "Montag"

]


Beispielergebnisse geben Dokumente zurück, die den Day_of_week nicht wie Montag enthalten.

Abschluss

In diesem Leitfaden wurde die Filterung von Elasticsearch -Ergebnissen unter Verwendung von booleschen Bedingungen wie Reichweite, Muss und mehr.