In questo tutorial, impareremo come paginare i risultati in Elasticsearch usando le API di paginazione.
La seguente screenshot mostra come è possibile implementare la paginazione fr elasticsearch per le applicazioni front-end.
In Elasticsearch, ci sono tre modi principali per eseguire impaginazione. Ogni metodo ha i suoi vantaggi e svantaggi. È quindi essenziale considerare la struttura dei dati memorizzati nel tuo indice.
In questa guida, impareremo come paginare usando i tre metodi principali. Vale a dire:
Da una paginazione dimensionale
Quando effettui una richiesta di ricerca in Elasticsearch, otterrai i primi 10 colpi della query corrispondente. Se si dispone di una query di ricerca che restituisce più documenti, è possibile utilizzare i parametri da e dimensioni.
Il parametro da DA viene utilizzato per definire il numero di record da saltare prima di visualizzare i documenti precedenti. Pensalo come l'indice in cui ElasticSearch inizia a mostrare i risultati.
Il parametro di dimensioni descriverà il numero massimo di record che la query di ricerca tornerà.
I parametri da e dimensioni sono molto applicabili quando si desidera creare risultati pagati.
Considera la query di seguito che illustra come utilizzare i parametri da e dimensioni:
Get /kibana_sample_data_flights /_search
"da": 0,
"dimensione": 5,
"query":
"incontro":
"DestcityName": "Denver"
Nella query sopra, cerchiamo i documenti che corrispondono a criteri specifici. Quindi utilizziamo i parametri da e dimensioni per determinare quanti record verranno visualizzati la query.
Nel nostro esempio, iniziamo ai primi documenti di corrispondenza. io.e., Iniziamo dall'indice 0.
Specifichiamo anche il numero massimo di documenti da visualizzare a 5.
I risultati della query sono i seguenti:
Come puoi vedere dalla risposta sopra, abbiamo sette colpi totali. Tuttavia, limitiamo i documenti massimi da mostrare come 5.
Per visualizzare gli ultimi due documenti, possiamo impostare il valore da 5 come:
Get /kibana_sample_data_flights /_search
"Da": 5,
"dimensione": 5,
"query":
"incontro":
"DestcityName": "Denver"
Paginazione a scorrimento
Il prossimo tipo di impaginazione in Elasticsearch è la paginazione per scorrimento. Richiede uno scroll_id univoco che determina il numero di documenti da mostrare e la durata del contesto di ricerca.
Considera la documentazione per saperne di più sul contesto di ricerca.
Per generare scroll_id, fai una richiesta come mostrato di seguito:
Get /kibana_sample_data_flights /_search?Scroll = 1m
"dimensione": 20,
"query":
"incontro":
"DestcityName": "Denver"
La query sopra dovrebbe restituire i risultati, incluso Scroll_id come mostrato:
Il parametro Scroll nella query di ricerca dice a ElaSticSearch di utilizzare 1 minuto come durata per il contesto di ricerca.
Per utilizzare l'API di scorrimento e visualizzare il seguente lotto di 20 risultati, utilizzare Scroll_id come mostrato:
Get /_search /scroll
"Scroll": "1M",
"Scroll_id":
"FGLUY2X1ZGVFY29UDGV4DF91DWLKDXF1ZXJ5QW5KRMV0Y2GBFML5Z0HNX3QZVHFHTLBNU
lrlz0rrveaaaaaabdsrzqundsq1zsrfjddxdtujmwvv9oyu5r "
La query dovrebbe restituire il prossimo lotto di documenti corrispondenti alla query specificata.
Per cancellare una pergamena, utilizzare una richiesta di eliminazione come:
DELETE /_Search /Scroll
"Scroll_id": "
La richiesta deve rimuovere la scorrimento come specificato dall'ID. È bene notare che il contesto di ricerca viene cancellato automaticamente quando la durata del set scade.
Cerca dopo l'impaginazione
L'altro metodo di impaginazione in Elasticsearch è Search_After. L'idea alla base di Search_After è recuperare i valori dopo un valore di ordinamento.
Facciamo un semplice esempio. Supponiamo di voler visualizzare i documenti il DestCityName = Denver e ordinare in base al prezzo del biglietto.
Get /kibana_sample_data_flights /_search
"dimensione": 2,
"query":
"incontro":
"DestcityName": "Denver"
, "ordinare": [
"Avgticketprice":
"Ordine": "Desc"
"
Se eseguiamo la query sopra, dovremmo vedere solo due dei colpi totali, come specificato dal parametro delle dimensioni.
Ci fornirà anche un valore di ordinamento per ogni documento come mostrato:
Possiamo usare questo valore di ordinamento per recuperare il prossimo lotto di documenti come:
Get /kibana_sample_data_flights /_search
"dimensione": 2,
"query":
"incontro":
"DestcityName": "Denver"
,
"Search_after": [940.3963]
, "ordinare": [
"Avgticketprice":
"Ordine": "Desc"
"
Quindi utilizziamo il parametro Search_After e l'ID ordinamento fornito nell'ultima richiesta per visualizzare il prossimo lotto di documenti.
Chiusura
Questa guida ti dà le basi dei risultati paginati in Elasticsearch utilizzando e dimensioni paginazioni, scroll e search_after paginazione. Considera la documentazione da esplorare.