Comment fonctionne la pagination dans Elasticsearch

Comment fonctionne la pagination dans Elasticsearch
Si vous avez déjà utilisé Kibana, vous remarquerez qu'il vous permet de voir des informations spécifiques stockées dans un index Elasticsearch. Cependant, comme la plupart des index contiennent des milliers d'enregistrements, Kibana coupe le numéro disponible par page, vous permettant de naviguer de la page à la page et d'afficher les enregistrements suivants ou précédents.

Dans ce tutoriel, nous apprendrons à paginer des résultats dans Elasticsearch en utilisant les API de pagination.

La capture d'écran suivante montre comment vous pouvez implémenter une pagination fr Elasticsearch pour les applications frontales.

Dans Elasticsearch, il existe trois façons principales d'effectuer une pagination. Chaque méthode a ses avantages et ses inconvénients. Il est donc essentiel de considérer la structure des données stockées dans votre index.

Dans ce guide, nous apprendrons à paginer en utilisant les trois méthodes principales. À savoir:

  1. De la pagination et de la taille
  2. Pagination de défilement
  3. Recherche après pagination.

De la pagination et de la taille

Lorsque vous faites une demande de recherche dans Elasticsearch, vous obtiendrez les 10 meilleurs succès de la requête correspondante. Si vous avez une requête de recherche qui renvoie plus de documents, vous pouvez utiliser les paramètres de From et de taille.

Le paramètre from est utilisé pour définir le nombre d'enregistrements à sauter avant d'afficher les documents précédents. Considérez-le comme l'index dans lequel Elasticsearch commence à afficher les résultats.

Le paramètre de taille décrira le nombre maximum d'enregistrements que la requête de recherche renvoiera.

Les paramètres de la taille et de la taille sont très applicables lorsque vous souhaitez créer des résultats paginés.

Considérez la requête ci-dessous qui illustre comment utiliser les paramètres de From et de taille:

Get / kibana_sample_data_flights / _search

"De": 0,
"Taille": 5,
"mettre en doute":
"correspondre":
"DestcityName": "Denver"


Dans la requête ci-dessus, nous recherchons les documents correspondant aux critères spécifiques. Nous utilisons ensuite les paramètres de From et de taille pour déterminer le nombre d'enregistrements que la requête affichera.

Dans notre exemple, nous commençons par les premiers documents correspondants. je.e., Nous commençons à l'index 0.

Nous spécifions également le nombre maximum de documents à afficher à 5.

Les résultats de la requête sont les suivants:

Comme vous pouvez le voir dans la réponse ci-dessus, nous avons sept coups sûrs. Cependant, nous limitons les documents maximaux à afficher comme 5.

Pour afficher les deux derniers documents, nous pouvons définir la valeur à partir de 5 comme:

Get / kibana_sample_data_flights / _search

"De": 5,
"Taille": 5,
"mettre en doute":
"correspondre":
"DestcityName": "Denver"


Pagination de défilement

Le prochain type de pagination dans Elasticsearch est la pagination de défilement. Il nécessite un scroll_id unique qui détermine le nombre de documents à afficher et la durée du contexte de recherche.

Considérez la documentation pour en savoir plus sur le contexte de recherche.

Pour générer le scroll_id, faites une demande comme indiqué ci-dessous:

Get / kibana_sample_data_flights / _search?Faites défiler = 1m

"Taille": 20,
"mettre en doute":
"correspondre":
"DestcityName": "Denver"


La requête ci-dessus doit renvoyer les résultats, y compris le scroll_id comme indiqué:

Le paramètre de défilement de la requête de recherche indique à Elasticsearch d'utiliser 1 minute comme durée du contexte de recherche.

Pour utiliser l'API Scroll et afficher le lot suivant de 20 résultats, utilisez le scroll_id comme indiqué:

Get / _search / Scroll

"Scroll": "1m",
"scroll_id":
"Fgluy2x1zgvfy29udgv4df91dwlkdxf1zxj5qw5krmv0y2gbfml5z0hnx3qzvhfhtlbnu
lrlz0rveaaaaaaaBdsrzqundsq1zsrfjddxdtujmwvv9oyu5r "

La requête doit renvoyer le prochain lot de documents correspondant à la requête spécifiée.

Pour effacer un parchemin, utilisez une demande de suppression comme:

Supprimer / _search / Scroll

"scroll_id": "

La demande doit supprimer le parchemin comme spécifié par l'ID. Il est bon de noter que le contexte de recherche est effacé automatiquement lorsque la durée de réglage expire.

Recherche après pagination

L'autre méthode de pagination dans Elasticsearch est Search_after. L'idée derrière search_after est de récupérer des valeurs après une valeur de tri.

Prenons un exemple simple. Supposons que nous voulons voir les documents le destcityName = Denver et le trier en fonction du prix du billet.

Get / kibana_sample_data_flights / _search

"Taille": 2,
"mettre en doute":
"correspondre":
"DestcityName": "Denver"


, "trier": [

"Avgticketprice":
"Ordre": "Desc"


]]

Si nous exécutons la requête ci-dessus, nous ne devrions voir que deux du total des résultats, comme spécifié par le paramètre de taille.

Il nous fournira également une valeur de tri pour chaque document comme indiqué:

Nous pouvons utiliser cette valeur de tri pour récupérer le prochain lot de documents comme:

Get / kibana_sample_data_flights / _search

"Taille": 2,
"mettre en doute":
"correspondre":
"DestcityName": "Denver"

,
"Search_after": [940.3963]
, "trier": [

"Avgticketprice":
"Ordre": "Desc"


]]

Nous utilisons ensuite le paramètre Search_after et l'ID de tri fourni dans la dernière demande pour afficher le prochain lot de documents.

Fermeture

Ce guide vous donne les bases des résultats paginés dans Elasticsearch Utilisation de la pagination de la taille et de la pagination, défilement et recherche_after. Considérez la documentation à explorer.