Index Elasticsearch Nombre de répliques

Expliquer comment configurer le nombre de répliques, ses implications et les meilleures pratiques.

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.

Elasticsearch est conçu pour être un système distribué capable de gérer un grand nombre de données et d'assurer une haute disponibilité. L'une des fonctions clés qui permet cela est le concept de réplication d'index, qui est contrôlé par le paramètre number_of_replicas. Cet article aborde les détails de ce paramètre, ses implications et la manière de le configurer correctement.

Le rôle des répliques dans Elasticsearch

Dans Elasticsearch, un index est une collection de documents qui sont répartis sur plusieurs shards primaires. Chaque groupe primaire est un index Apache Lucene autonome, et les documents d'un index sont répartis entre tous les groupes primaires. Pour garantir la haute disponibilité et la redondance des données, Elasticsearch permet à chaque nuage d'avoir une ou plusieurs copies, appelées répliques.

Le paramètre number_of_replicas contrôle le nombre de répliques (copies) qu'Elasticsearch crée pour chaque réplique primaire d'un index. Par défaut, Elasticsearch crée une réplique pour chaque shard primaire, mais cela peut être modifié en fonction des besoins de votre système.

Configuration du nombre de répliques (number_of_replicas)

Le paramètre number_of_replicas peut être configuré au moment de la création de l'index ou mis à jour ultérieurement. Voici comment vous pouvez le définir lors de la création de l'index :

Dans cet exemple, Elasticsearch créera deux réplicas pour chaque fichier primaire de l'index my_index.

Pour mettre à jour le paramètre number_of_replicas d'un index existant, vous pouvez utiliser l'API _settings:

Cette commande mettra à jour l'index my_index pour qu'il y ait trois réplicas pour chaque groupe primaire.

Implications du paramètre number_of_replicas (nombre de répliques)

Le paramètre number_of_replicas a un impact significatif sur les performances et la résilience de votre cluster Elasticsearch. Voici quelques points clés à prendre en considération :

  1. Redondance et disponibilité des données : L'augmentation du site number_of_replicas améliore la disponibilité de vos données en créant davantage de copies de chaque groupe de données. Si un nœud tombe en panne, Elasticsearch peut toujours servir des données à partir des répliques sur les nœuds restants.
  2. Performances de recherche : Les répliques peuvent répondre à des demandes de lecture. Le fait de disposer d'un plus grand nombre de répliques peut donc améliorer les performances en matière de recherche en répartissant la charge sur un plus grand nombre de répliques.
  3. Performance d'écriture : Cependant, chaque opération d'écriture doit être exécutée sur chaque copie d'un groupe de données. Par conséquent, une adresse number_of_replicas plus élevée peut ralentir les performances d'indexation car elle augmente le nombre d'opérations à effectuer pour chaque écriture.
  4. Exigences en matière de stockage : Plus il y a de répliques, plus il y a d'espace de stockage. Vous devez vous assurer que votre cluster dispose d'une capacité suffisante pour stocker les répliques supplémentaires.
  5. Résilience en cas de défaillance d'un nœud : Le site number_of_replicas doit être défini en fonction du nombre de nœuds de votre cluster. Si le site number_of_replicas est égal ou supérieur au nombre de nœuds, votre cluster peut tolérer la défaillance de plusieurs nœuds sans perte de données.

Bonnes pratiques pour définir le nombre de répliques (number_of_replicas)

Le réglage optimal de number_of_replicas dépend des exigences spécifiques de votre système. Toutefois, voici quelques bonnes pratiques générales :

  • Pour un cluster à un seul nœud, number_of_replicas doit être fixé à 0, car il n'y a pas d'autres nœuds pour contenir des répliques.
  • Pour un cluster à plusieurs nœuds, number_of_replicas doit être réglé sur au moins 1 pour assurer la redondance des données et la haute disponibilité.
  • Si la performance de la recherche est une priorité, envisagez d'augmenter le site number_of_replicas. Toutefois, il convient de garder à l'esprit le compromis entre les performances d'écriture et les exigences en matière de stockage.
  • Assurez-vous toujours que votre cluster dispose d'une capacité suffisante pour stocker les répliques supplémentaires.

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