Comment augmenter le nombre de shards primaires dans Elasticsearch ?

Exploration des méthodes permettant d'augmenter le nombre de tiroirs primaires dans Elasticsearch.

Vous débutez avec Elasticsearch ? Participez à notre webinaire Premiers pas avec Elasticsearch. Vous pouvez aussi démarrer un essai gratuit sur le cloud ou tester Elastic dès maintenant sur votre machine.

Il n'est pas possible d'augmenter le nombre de shards primaires d'un index existant, ce qui signifie qu'un index doit être recréé si vous souhaitez augmenter le nombre de shards primaires. Deux méthodes sont généralement utilisées dans ces situations : l'API _reindex et l'API _split.

L'API _split est souvent plus rapide que l'API _reindex. L'indexation doit être arrêtée avant les deux opérations, sinon les comptes des documents source_index et cible_index seront différents.

Méthode 1 - utilisation de l'API fractionnée

L'API de fractionnement est utilisée pour créer un nouvel index avec le nombre souhaité d'unités primaires en copiant les paramètres et en mappant un index existant. Le nombre désiré de fragments primaires peut être défini lors de la création. Les paramètres suivants doivent être vérifiés avant de mettre en œuvre l'API fractionnée :

  1. L'index source doit être en lecture seule. Cela signifie que le processus d'indexation doit être arrêté.
  2. Le nombre de groupes primaires dans l'index cible doit être un multiple du nombre de groupes primaires dans l'index source. Par exemple, si l'index source dispose de 5 groupes primaires, les groupes primaires de l'index cible peuvent être définis comme suit : 10, 15, 20, et ainsi de suite.

Remarque : si seul le numéro du fonds primaire doit être modifié, il est préférable d'utiliser l'API de fractionnement, qui est beaucoup plus rapide que l'API de réindexation.

Mise en œuvre de l'API fractionnée

Créer un index de test :

L'index source doit être en lecture seule pour pouvoir être scindé :

Les paramètres et les correspondances seront copiés automatiquement à partir de l'index source :

Vous pouvez vérifier l'état d'avancement avec :

Étant donné que les paramètres et les mappages sont copiés à partir des index source, l'index cible est en lecture seule. Activons l'opération d'écriture pour l'index cible :

Vérifier les index source et cible docs.count avant de supprimer l'index original :

Le nom de l'index et le nom de l'alias ne peuvent pas être identiques. Vous devez supprimer l'index source et ajouter le nom de l'index source comme alias à l'index cible :

Après avoir ajouté l'alias test_split_source à l'index test_split_target, vous devez le tester avec :

Méthode 2 - utilisation de l'API de réindexation

En créant un nouvel index à l'aide de l'API Reindex, il est possible d'indiquer n'importe quel nombre de comptes de tessons primaires. Après la création d'un nouvel index avec le nombre prévu de groupes primaires, toutes les données de l'index source peuvent être réindexées sur ce nouvel index.

Outre les fonctionnalités de l'API fractionnée, les données peuvent être manipulées à l'aide de la ligne de conduite ingest_pipeline dans l'API de réindexation. Avec le pipeline d'ingestion, seuls les champs spécifiés qui correspondent au filtre seront indexés dans l'index cible à l'aide de la requête. Le contenu des données peut être modifié à l'aide d'un script simple, et plusieurs index peuvent être fusionnés en un seul.

Mise en œuvre de l'API de réindexation

Créer un test de réindexation :

Copier les paramètres et les mappages de l'index source :

Créez un index cible avec des paramètres, des mappings et le nombre de tiroirs souhaité :

*Remarque : les paramètres number_of_replicas : 0 et refresh_interval : -1 augmentera la vitesse de réindexation.

Lancer le processus de réindexation. Les paramètres requests_per_second=-1 et slices=auto permettent d'ajuster la vitesse de réindexation.

Vous verrez l'identifiant de la tâche lorsque vous exécuterez l'API de réindexation. Copiez-le et vérifiez avec l'API _tasks :

Mettre à jour les paramètres une fois la réindexation terminée :

Vérifiez les index source et cible docs.count avant de supprimer l'index original, ils doivent être identiques :

Le nom de l'index et le nom de l'alias ne peuvent pas être identiques. Supprimer l'index source et ajouter le nom de l'index source comme alias à l'index cible :

Après avoir ajouté l'alias test_split_source à l'index test_split_target, testez-le en utilisant :

Résumé

Si vous souhaitez augmenter le nombre de tessons primaires d'un index existant, vous devez recréer les paramètres et les correspondances avec un nouvel index. Il existe deux méthodes principales pour ce faire : l'API de réindexation et l'API de scission. L'indexation active doit être arrêtée avant d'utiliser l'une ou l'autre méthode.

Pour aller plus loin

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même