Hvordan fungerer paginering i Elasticsearch

Hvordan fungerer paginering i Elasticsearch
Hvis du noen gang har brukt Kibana, vil du legge merke til at den lar deg se spesifikk informasjon som er lagret i en Elasticsearch -indeks. Siden de fleste indekser inneholder tusenvis av poster, trimmer Kibana imidlertid nummeret som er tilgjengelig per side, slik at du kan navigere fra side til side og se neste eller tidligere poster.

I denne opplæringen vil vi lære å paginere resultater i elasticsearch ved bruk av paginerings -API -ene.

Følgende skjermbilde viser hvordan du kan implementere paginering FR Elasticsearch for front-end applikasjoner.

I Elasticsearch er det tre hovedmåter å utføre paginering. Hver metode har sine fordeler og ulemper. Det er derfor viktig å vurdere strukturen til dataene som er lagret i indeksen din.

I denne guiden vil vi lære å paginere ved hjelp av de tre hovedmetodene. Nemlig:

  1. Fra og størrelse paginering
  2. Rulle paginering
  3. Søk etter paginering.

Fra og størrelse paginering

Når du foretar en søkeforespørsel i Elasticsearch, vil du få de 10 beste treffene i Matching Query. Hvis du har et søk som returnerer flere dokumenter, kan du bruke fra og størrelsesparametere.

FRA -parameteren brukes til å definere antall poster som skal hoppes ut før du viser de foregående dokumentene. Tenk på det som indeksen som Elasticsearch begynner å vise resultatene.

Størrelsesparameteren vil beskrive det maksimale antall poster som søket vil returnere.

Parametrene fra og størrelse er veldig anvendelige når du vil opprette sugesultater.

Tenk på spørringen nedenfor som illustrerer hvordan du bruker fra og størrelsesparametere:

Få /kibana_sample_data_flights /_search

"fra": 0,
"Størrelse": 5,
"spørring":
"kamp":
"DestcityName": "Denver"


I spørringen over søker vi dokumentene som samsvarer med spesifikke kriterier. Vi bruker deretter fra og størrelsesparametere for å bestemme hvor mange poster spørringen vises.

I vårt eksempel starter vi på de første matchende dokumentene. Jeg.e., Vi starter på indeks 0.

Vi spesifiserer også det maksimale antall dokumenter som skal vises til 5.

Resultatene fra spørringen er som følger:

Som du ser av responsen over, har vi syv totale treff. Vi begrenser imidlertid de maksimale dokumentene som skal vises som 5.

For å se de to siste dokumentene, kan vi angi FRA -verdien til 5 som:

Få /kibana_sample_data_flights /_search

"fra": 5,
"Størrelse": 5,
"spørring":
"kamp":
"DestcityName": "Denver"


Rulle paginering

Den neste typen paginering i Elasticsearch er Scroll Pagination. Det krever en unik Scroll_id som bestemmer antall dokumenter som skal vises og varigheten av søkekonteksten.

Tenk på dokumentasjonen for å lære mer om søkekontekst.

For å generere Scroll_ID, legg en forespørsel som vist nedenfor:

Få /kibana_sample_data_flights /_search?rulle = 1 m

"Størrelse": 20,
"spørring":
"kamp":
"DestcityName": "Denver"


Spørringen ovenfor skal returnere resultatene, inkludert Scroll_id som vist:

Rullparameteren i søket forteller Elasticsearch å bruke 1 minutt som varighet for søkekonteksten.

For å bruke Scroll API og se følgende batch på 20 resultater, bruk Scroll_id som vist:

Få /_Search /Scroll

"Scroll": "1m",
"Scroll_id":
"FGLUY2X1ZGVFY29UDGV4DF91DWLKDXF1ZXJ5QW5KRMV0Y2GBFML5Z0HNX3QZVHFHTLBNU
lrlz0rrveeaaaaaaabdsrzqundsq1zsrfjddxdtujmwvv9oyu5r "

Spørringen skal returnere neste gruppe med dokumenter som samsvarer med den spesifiserte spørringen.

For å tømme en rulle, bruk en slettforespørsel som:

Slett /_Search /Scroll

"Scroll_id": "

Forespørselen skal fjerne rullen som spesifisert av IDen. Det er godt å merke seg at søkekonteksten blir fjernet automatisk når den innstilte varigheten utløper.

Søk etter paginering

Den andre pagineringsmetoden i Elasticsearch er Search_after. Ideen bak Search_after er å hente verdier etter en sorteringsverdi.

La oss ta et enkelt eksempel. Anta at vi vil se dokumentene DestCityName = Denver og sorterer basert på billettprisen.

Få /kibana_sample_data_flights /_search

"Størrelse": 2,
"spørring":
"kamp":
"DestcityName": "Denver"


, "Sorter": [

"AvgticketPrice":
"Order": "Desc"


]

Hvis vi kjører spørringen ovenfor, bør vi bare se to av de totale treffene, som spesifisert av størrelsesparameteren.

Det vil også gi oss en slags verdi for hvert dokument som vist:

Vi kan bruke denne typen verdi til å hente neste gruppe med dokumenter som:

Få /kibana_sample_data_flights /_search

"Størrelse": 2,
"spørring":
"kamp":
"DestcityName": "Denver"

,
"Search_after": [940.3963]
, "Sorter": [

"AvgticketPrice":
"Order": "Desc"


]

Vi bruker deretter Parameteren Search_after.

Lukking

Denne guiden gir deg det grunnleggende om pagineringsresultater i elasticsearch ved bruk av og størrelse paginering, rulle og search_after pagination. Vurder dokumentasjonen for å utforske.