Wie funktioniert Pagination in Elasticsearch?

Wie funktioniert Pagination in Elasticsearch?
Wenn Sie jemals Kibana verwendet haben, werden Sie feststellen, dass Sie bestimmte Informationen anzeigen können, die in einem Elasticsarch -Index gespeichert sind. Da die meisten Indizes jedoch Tausende von Aufzeichnungen enthalten, wird Kibana die pro Seite verfügbare Nummer abgeschnitten, sodass Sie von Seite zu Seite navigieren und die nächsten oder vorherigen Datensätze anzeigen können.

In diesem Tutorial lernen wir, wie die Ergebnisse in Elasticsearch mithilfe der Pagination APIs paginieren können.

Der folgende Screenshot zeigt, wie Sie die Paginierung von Elasticsearch für Front-End-Anwendungen implementieren können.

In Elasticsearch gibt es drei Hauptmethoden, um Paginierung durchzuführen. Jede Methode hat ihre Vor- und Nachteile. Es ist daher wichtig, die Struktur der in Ihrem Index gespeicherten Daten zu berücksichtigen.

In diesem Leitfaden lernen wir, wie man mit den drei Hauptmethoden pagiert. Nämlich:

  1. Aus und Größenpagination
  2. Scroll -Pagination
  3. Suche nach Pagination.

Aus und Größenpagination

Wenn Sie in Elasticsearch eine Suchanfrage stellen, erhalten Sie die Top 10 Treffer der passenden Abfrage. Wenn Sie eine Suchabfrage haben, die mehr Dokumente zurückgibt, können Sie die Parameter aus und die Größen verwenden.

Der aus Parameter aus dem Parameter wird verwendet, um die Anzahl der Datensätze zu definieren, die vor dem Anzeigen der vorhergehenden Dokumente überspringen sollen. Betrachten Sie es als den Index, in dem Elasticsearch die Ergebnisse zeigt.

Der Größenparameter beschreibt die maximale Anzahl von Datensätzen, die die Suchabfrage zurückgibt.

Die aus und die Größenparameter sind sehr anwendbar, wenn Sie PAGED -Ergebnisse erstellen möchten.

Betrachten Sie die folgende Abfrage, die zeigt, wie die Parameter aus und die Größenverwaltung verwendet werden:

Get /kibana_sample_data_flights /_search

"von": 0,
"Größe 5,
"Anfrage":
"passen":
"DestcityName": "Denver"


In der obigen Abfrage suchen wir die Dokumente, die bestimmte Kriterien entsprechen. Wir verwenden dann die Parameter aus und Größen, um festzustellen, wie viele Datensätze die Abfrage angezeigt werden.

In unserem Beispiel beginnen wir bei den ersten übereinstimmenden Dokumenten. ich.e., Wir beginnen am Index 0.

Wir geben auch die maximale Anzahl von Dokumenten an, die auf 5 angezeigt werden sollen.

Die Ergebnisse der Abfrage sind wie folgt:

Wie Sie aus der obigen Antwort sehen können, haben wir sieben Treffer. Wir begrenzen jedoch die maximalen Dokumente auf 5.

Um die letzten beiden Dokumente anzuzeigen, können wir den Wert von Wert auf 5 als:

Get /kibana_sample_data_flights /_search

"Von": 5,
"Größe 5,
"Anfrage":
"passen":
"DestcityName": "Denver"


Scroll -Pagination

Die nächste Art der Pagination in Elasticsearch ist die Bildlaufpaginierung. Es erfordert eine eindeutige Scroll_ID, die die Anzahl der zu zeigen, die angezeigt werden sollen, und die Dauer des Suchkontexts.

Betrachten Sie die Dokumentation, um mehr über den Suchkontext zu erfahren.

Um die scroll_id zu generieren, stellen Sie eine Anforderung wie unten gezeigt:

Get /kibana_sample_data_flights /_search?scrollen = 1m

"Größe": 20,
"Anfrage":
"passen":
"DestcityName": "Denver"


Die obige Abfrage sollte die Ergebnisse zurückgeben, einschließlich der SCROLL_ID, wie gezeigt:

Der Scroll -Parameter in der Suchabfrage sagt Elasticsearch, dass sie 1 Minute als Dauer für den Suchkontext verwenden soll.

Verwenden Sie die Scroll -API und die folgende Stapel von 20 Ergebnissen an

Get /_search /scrollen

"Scrollen": "1m",
"scroll_id":
"FGluy2X1ZGVFY29UDGV4DF91DWLKDXF1ZXJ5QW5KRMV0Y2GBFML5Z0HNX3QZVHFHTLBNU
lrlz0rrveaaaaaaabdsrzqundsq1zsrfjdxdtujmwvv9oyu5r "

Die Abfrage sollte die nächste Stapel von Dokumenten zurückgeben, die mit der angegebenen Abfrage übereinstimmen.

Um eine Schriftrolle zu löschen, verwenden Sie eine Anforderung löschen als:

Löschen /_search /scrollen

"scroll_id": "

Die Anforderung sollte die Schriftrolle gemäß der ID entfernen. Es ist gut zu beachten, dass der Suchkontext automatisch gelöscht wird, wenn die festgelegte Dauer abläuft.

Suche nach Pagination

Die andere Pagierungsmethode in Elasticsearch ist Search_after. Die Idee hinter Search_after besteht darin, Werte nach einem Sortierwert abzurufen.

Nehmen wir ein einfaches Beispiel. Angenommen, wir möchten die Dokumente den DestcityName = Denver ansehen und basierend auf dem Ticketpreis sortieren.

Get /kibana_sample_data_flights /_search

"Größe": 2,
"Anfrage":
"passen":
"DestcityName": "Denver"


, "sortieren": [

"AvGticketprice":
"Order": "Desc"


]

Wenn wir die obige Abfrage ausführen, sollten wir nur zwei der Gesamthits sehen, wie im Parameter der Größenbeobachtung angegeben.

Es bietet uns auch einen Sortwert für jedes Dokument, wie gezeigt:

Wir können diesen Sortierwert verwenden, um die nächste Stapel von Dokumenten als:

Get /kibana_sample_data_flights /_search

"Größe": 2,
"Anfrage":
"passen":
"DestcityName": "Denver"

,
"Search_after": [940.3963]
, "sortieren": [

"AvGticketprice":
"Order": "Desc"


]

Anschließend verwenden wir den Parameter search_after und die in der letzten Anfrage bereitgestellte Sortier -ID, um die nächste Dokumente anzuzeigen.

Schließen

Diese Anleitung gibt Ihnen die Grundlagen der paginierenden Ergebnisse in Elasticsearch verwendet und Größenpagination, Scrollen und Search_after Pagination. Betrachten Sie die Dokumentation, um zu untersuchen.