In Elasticsearch kann eine Suchabfrage so einfach sein wie ein einzelnes Dokument oder große und komplexe Ergebnisse, die aus Millionen von Datensätzen bestehen.
Dieser prägnante Leitfaden lehrt Sie, durch die von einer Suchanfrage zurückgegebenen Dokumente mit der Scroll -API zu scrollen.
Es ist gut zu beachten. Es ist hauptsächlich hilfreich für die Verarbeitung umfassender Sammlungen von Dokumenten.
Grundnutzung
In diesem Beispiel werden wir den Index von Kibana_Sample_Data_flight verwenden. Sie finden die Stichprobendaten auf Kibana Erste Start -Seite.
Angenommen, wir möchten die Anzahl der Flüge erhalten, bei denen der Ticketpreis größer als 500 und weniger als 1000 betrug. Wir können eine Frage ausführen, wie:
Get /kibana_sample_data_flights /_search
"Anfrage":
"Bereich":
"A":
"gte": 500,
"LTE": 1000,
"Boost": 2
Sobald wir die oben genannte Anfrage ausgeführt haben, sollten wir alle Dokumente innerhalb des angegebenen Bereichs des Ticketpreises erhalten.
Unten ist ein Beispielausgang:
Wie Sie aus der obigen Ausgabe erkennen können, erhalten wir über 7800 Ergebnisse in einer einzelnen Abfrage.
Nehmen wir an, wir möchten jeweils nur einen Datensatz anstelle des gesamten 7844 anzeigen. Wir können dies tun, indem wir die aus und in der folgenden Abfrage gezeigten Größenparameter verwenden:
Get /kibana_sample_data_flights /_search
"von": 0,
"Größe": 1,
"Anfrage":
"Bereich":
"AvGticketprice":
"gte": 500,
"LTE": 1000,
"Boost": 2
Im obigen Beispiel verwenden wir den aus Parameter aus dem Parameter, der definiert, welchen Index wir mit dem Abrufen der Datensätze beginnen sollten. Da die Indexierung in Kibana bei 0 beginnt, setzen wir es als Anfangsindexwert fest.
Der Größenparameter legt die maximale Anzahl der Datensätze pro Seite fest, die angezeigt werden sollen.
Ein Beispiel für die Ergebnisse ist unten:
Wie Sie aus der obigen Ausgabe sehen können, erhalten wir nur ein Dokument aus insgesamt 7844.
Um zum nächsten Dokument zu scrollen, beginnen wir von 1 anstelle von 0. Als:
Get /kibana_sample_data_flights /_search
"von": 1,
"Größe": 1,
"Anfrage":
"Bereich":
"AvGticketprice":
"gte": 500,
"LTE": 1000,
"Boost": 2
Dadurch wird das folgende Dokument aus dem Suchergebnis abgerufen.
Bei der Verwendung der Parameter aus und der Größe beschränken sich Elasticsearch auf nur 10.000 Dokumente.
Die Scroll -API
Die Scroll -API ist an diesem Punkt nützlich. Wir können es verwenden, um eine umfangreiche Sammlung von Dokumenten aus einer einzigen Anfrage abzurufen.
Die Scroll -API erfordert eine scroll_id, die Sie erhalten können, indem Sie das Bildlaufargument in der Abfrageanforderung angeben.
Das Bildlaufargument muss angeben, wie lange der Suchkontext am Leben bleibt.
Lassen Sie uns sehen, wie man es in einem Beispiel verwendet.
Der erste Schritt besteht darin, die scroll_id abzurufen, die wir tun können, indem wir den Scroll -Parameter übergeben, gefolgt von der Dauer des Suchkontexts.
Post /kibana_sample_data_flights /_search?scrollen = 10m
"Größe": 100,
"Anfrage":
"Bereich":
"AvGticketprice":
"gte": 500,
"LTE": 1000,
"Boost": 2
In der obigen Beispielanforderung setzen wir den Scroll -Parameter mit einem Suchkontext von 10 Minuten fest. Anschließend geben wir die Anzahl der Datensätze an, die pro Seite abgerufen werden sollen, und die zugängliche Abfrage.
Die Antwort aus der obigen Anforderung sollte eine scroll_id enthalten, die wir mit Scroll -API und den ersten 100 Dokumenten, die mit der angegebenen Abfrage entsprechen, verwenden können.
Um die nächste Stapel von 100 Datensätzen zu erhalten, verwenden wir die Scroll -API, einschließlich der Scroll -ID aus der obigen Antwort.
Get /_search /scrollen
"Scrollen": "10m",
"scroll_id": "fgluy2x1zgvfy29udgv4df91dwlkdxf1zxj5qw5KRMV0Y2GBFKO5WGQ3VTBOUZVLW"
In der obigen Anfrage geben wir an, dass wir die Scroll -API verwenden möchten, gefolgt vom Suchkontext. Dies sagt Elasticsearch, den Suchkontext zu aktualisieren und 10 Minuten am Leben zu erhalten.
Als Nächst.
Abschließende Gedanken
Die Scroll -API ist praktisch, wenn Sie Dokumente mehr als 10.000 abrufen müssen. Trotz ihrer Funktionalität hat die Scroll -API einige Nachteile, die von anderen Pagierungsmethoden wie Search_after angesprochen werden.
Betrachten Sie unser Tutorial über Elasticsearch -Pagination, um mehr zu erfahren.