Jak działa paginacja w ElasticSearch

Jak działa paginacja w ElasticSearch
Jeśli kiedykolwiek używałeś kibany, zauważysz, że pozwala to wyświetlić konkretne informacje przechowywane w indeksie ElasticSearch. Ponieważ jednak większość indeksów zawiera tysiące rekordów, Kibana przyciąga liczbę dostępną na stronę, umożliwiając nawigację ze strony do strony i wyświetlanie następnych lub poprzednich rekordów.

W tym samouczku dowiemy się, jak pogadać wyniki w elasticsearch przy użyciu interfejsów API paginacji.

Poniższy zrzut ekranu pokazuje, w jaki sposób możesz zaimplementować paginację fr elasticsearch do aplikacji front-end.

W ElasticSearch istnieją trzy główne sposoby przeprowadzenia paginacji. Każda metoda ma swoje zalety i wady. Dlatego konieczne jest rozważenie struktury danych przechowywanych w twoim indeksie.

W tym przewodniku dowiemy się, jak paginizować przy użyciu trzech głównych metod. Mianowicie:

  1. Z paginacji i wielkości
  2. Paginacja przewijania
  3. Szukaj po paginacji.

Z paginacji i wielkości

Po złożeniu wniosku o wyszukiwanie w ElasticSearch otrzymasz 10 najlepszych trafień w dopasowanym zapytaniu. Jeśli masz zapytanie, które zwraca więcej dokumentów, możesz użyć parametrów z i rozmiaru.

Parametr z from służy do zdefiniowania liczby rekordów do pominięcia przed wyświetleniem poprzednich dokumentów. Pomyśl o tym jako o indeksie, w którym ElasticSearch zaczyna pokazywać wyniki.

Parametr rozmiaru opisuje maksymalną liczbę rekordów, które zwróci zapytanie wyszukiwania.

Parametry z i wielkości mają bardzo obowiązujące, gdy chcesz utworzyć wyniki pagne.

Rozważ pytanie poniżej, które ilustruje, jak korzystać z parametrów z i rozmiaru:

Get /kibana_sample_data_flights /_search

„From”: 0,
„Rozmiar”: 5,
"zapytanie":
"mecz":
„DestCityName”: „Denver”


W powyższym zapytaniu przeszukujemy dokumenty pasujące do określonych kryteriów. Następnie używamy parametrów z i rozmiaru, aby określić, ile rekordów wyświetli zapytanie.

W naszym przykładzie zaczynamy od pierwszych dopasowanych dokumentów. I.mi., Zaczynamy od indeksu 0.

Określamy również maksymalną liczbę dokumentów do wyświetlenia do 5.

Wyniki zapytania są następujące:

Jak widać z powyższej odpowiedzi, mamy siedem całkowitych trafień. Ograniczamy jednak maksymalne dokumenty, które można pokazać jako 5.

Aby wyświetlić dwa ostatnie dokumenty, możemy ustawić wartość na 5 jako:

Get /kibana_sample_data_flights /_search

„From”: 5,
„Rozmiar”: 5,
"zapytanie":
"mecz":
„DestCityName”: „Denver”


Paginacja przewijania

Kolejnym rodzajem paginacji w Elasticsearch jest Pagination Scroll. Wymaga unikalnego scroll_id, który określa liczbę dokumentów do wyświetlenia i czas trwania kontekstu wyszukiwania.

Rozważ dokumentację, aby dowiedzieć się więcej o kontekście wyszukiwania.

Aby wygenerować scroll_id, zrób żądanie, jak pokazano poniżej:

Get /kibana_sample_data_flights /_search?Scroll = 1m

„Rozmiar”: 20,
"zapytanie":
"mecz":
„DestCityName”: „Denver”


Powyższe zapytanie powinno zwrócić wyniki, w tym scroll_id, jak pokazano:

Parametr Scroll w zapytaniu informuje ElasticSearch, aby użył 1 minuty jako czasu trwania kontekstu wyszukiwania.

Aby użyć interfejsu API Scroll i wyświetl następującą partię 20 wyników, użyj Scroll_ID, jak pokazano:

Get /_search /Scroll

„Scroll”: „1m”,
„Scroll_id”:
„Fgluy2x1zgvfy29udgv4df91dwlkdxf1zxj5qw5krmv0y2gbfml5z0hnx3qzvhfhtlbnu
lrlz0rveeaaaaaAbdzqundsq1zsrfjddxdtujmwvv9oyu5r ""

Zapytanie powinno zwrócić następną partię dokumentów pasujących do określonego zapytania.

Aby wyczyścić zwój, użyj żądania usuwania jako:

Usuń /_search /przewijanie

„scroll_id”: "

Żądanie powinno usunąć zwój określony przez identyfikator. Warto zauważyć, że kontekst wyszukiwania jest usuwany automatycznie, gdy wygasa ustawiona czas trwania.

Szukaj po paginacji

Drugą metodą paginacji w ElasticSearch jest wyszukiwanie. Ideą Search_after jest pobieranie wartości po wartości sortowania.

Weźmy prosty przykład. Załóżmy, że chcemy zobaczyć dokumenty DestCityName = Denver i sortowanie na podstawie ceny biletu.

Get /kibana_sample_data_flights /_search

„Rozmiar”: 2,
"zapytanie":
"mecz":
„DestCityName”: „Denver”


, „Sort”: [

„AvgticketPrice”:
„Zamów”: „DESC”


]

Jeśli uruchomimy powyższe zapytanie, powinniśmy zobaczyć tylko dwa z całkowitych trafień, jak określono w parametrze wielkości.

Zapewni nam również wartość sortowania dla każdego dokumentu, jak pokazano:

Możemy użyć tej wartości sortowania, aby pobrać następną partię dokumentów jako:

Get /kibana_sample_data_flights /_search

„Rozmiar”: 2,
"zapytanie":
"mecz":
„DestCityName”: „Denver”

,
„Search_after”: [940.3963]
, „Sort”: [

„AvgticketPrice”:
„Zamów”: „DESC”


]

Następnie używamy parametru Search_After i identyfikatora sortowania w ostatnim żądaniu, aby wyświetlić następną partię dokumentów.

Zamknięcie

Ten przewodnik zawiera podstawy paginujących wyników w elasticsearch za pomocą paginacji i rozmiaru Pagination i Search_After. Rozważ dokumentację do zbadania.