Comment faites-vous défiler dans Elasticsearch?

Comment faites-vous défiler dans Elasticsearch?

Dans Elasticsearch, une requête de recherche peut être aussi simple qu'un seul document ou des résultats importants et complexes composés de millions d'enregistrements.

Ce guide concis vous apprendra à faire défiler les documents renvoyés à partir d'une requête de recherche à l'aide de l'API Scroll.

Il est bon de noter que le défilement des documents à l'aide de l'API Scroll n'est pas recommandé pour les demandes en temps réel. Il est principalement utile pour traiter les vastes collections de documents.

Utilisation de base

Dans cet exemple, nous utiliserons l'index kibana_sample_data_flights. Vous pouvez trouver les données échantillonnées sur la page de démarrage de Kibana.

Supposons que nous voulons obtenir le nombre de vols où le prix du billet était supérieur à 500 et moins de 1000, nous pouvons effectuer une requête:

Get / kibana_sample_data_flights / _search

"mettre en doute":
"gamme":
"UN":
"GTE": 500,
"LTE": 1000,
"Boost": 2



Une fois que nous avons exécuté la demande ci-dessus, nous devrions obtenir tous les documents dans la plage spécifiée du prix du billet.

Vous trouverez ci-dessous un exemple de sortie:

Comme vous pouvez le voir à partir de la sortie ci-dessus, nous obtenons plus de 7800 résultats en une seule requête.

Disons que nous ne voulons voir qu'un seul enregistrement à la fois au lieu de l'ensemble du 7844. Nous pouvons le faire en utilisant les paramètres FRAT et Taille comme indiqué dans la requête ci-dessous:

Get / kibana_sample_data_flights / _search

"De": 0,
"Taille": 1,
"mettre en doute":
"gamme":
"Avgticketprice":
"GTE": 500,
"LTE": 1000,
"Boost": 2



Dans l'exemple ci-dessus, nous utilisons le paramètre From qui définit quel index nous devons commencer à récupérer les enregistrements. Étant donné que l'indexation en kibana commence à 0, nous la définissons comme valeur d'index initiale.

Le paramètre de taille définit le nombre maximum d'enregistrements à afficher par page.

Un exemple des résultats est ci-dessous:

Comme vous pouvez le voir dans la sortie ci-dessus, nous ne tirons qu'un seul document sur un total de 7844.

Pour faire défiler le document suivant, nous commençons à partir de 1 au lieu de 0. Comme:

Get / kibana_sample_data_flights / _search

"À partir de 1,
"Taille": 1,
"mettre en doute":
"gamme":
"Avgticketprice":
"GTE": 500,
"LTE": 1000,
"Boost": 2



Cela récupérera le document suivant à partir du résultat de la recherche.

Lorsque vous utilisez les paramètres de From et de taille, Elasticsearch vous limitera à seulement 10 000 documents.

L'API Scroll

L'API Scroll est utile à ce stade. Nous pouvons l'utiliser pour récupérer une vaste collection de documents à partir d'une seule demande.

L'API Scroll nécessite un scroll_id que vous pouvez obtenir en spécifiant l'argument de défilement dans la demande de requête.

L'argument de défilement doit spécifier combien de temps le contexte de recherche reste en vie.

Voyons comment l'utiliser dans un exemple.

La première étape consiste à récupérer le scroll_id, ce que nous pouvons faire en passant le paramètre de défilement suivi de la durée du contexte de recherche.

Post / kibana_sample_data_flights / _search?Faites défiler = 10m

"Taille": 100,
"mettre en doute":
"gamme":
"Avgticketprice":
"GTE": 500,
"LTE": 1000,
"Boost": 2



Dans l'exemple de demande ci-dessus, nous définissons le paramètre de défilement avec un contexte de recherche de 10 minutes. Nous spécifions ensuite le nombre d'enregistrements à récupérer par page et la requête en correspondance.

La réponse de la demande ci-dessus doit inclure un scroll_id que nous pouvons utiliser avec API Scroll et les 100 premiers documents correspondant à la requête spécifiée.

Pour obtenir le prochain lot de 100 enregistrements, nous utilisons l'API Scroll, y compris l'ID de défilement de la réponse ci-dessus.

Get / _search / Scroll

"Scroll": "10m",
"Scroll_id": "fgluy2x1zgvfy29udgv4df91dwlkdxf1zxj5qw5krmv0y2gbfko5wgq3vtbouzvlw"

Dans la demande ci-dessus, nous spécifions que nous voulons utiliser l'API Scroll suivie du contexte de recherche. Cela dit à Elasticsearch de rafraîchir le contexte de recherche et de le maintenir en vie pendant 10 minutes.

Ensuite, nous passons le scroll_id que nous obtenons de la demande précédente et récupérons les 100 documents suivants.

Dernières pensées

L'API Scroll est utile lorsque vous avez besoin de récupérer des documents plus de 10 000. Malgré ses fonctionnalités, l'API Scroll présente certains inconvénients abordés par d'autres méthodes de pagination telles que Search_After.

Considérez notre tutoriel sur la pagination Elasticsearch pour en savoir plus.