Elasticsearch - Modules

Elasticsearch est composé d'un certain nombre de modules, qui sont responsables de sa fonctionnalité. Ces modules ont deux types de paramètres comme suit -

  • Static Settings- Ces paramètres doivent être configurés dans le fichier config (elasticsearch.yml) avant de démarrer Elasticsearch. Vous devez mettre à jour tous les nœuds de préoccupation du cluster pour refléter les modifications apportées par ces paramètres.

  • Dynamic Settings - Ces paramètres peuvent être définis sur Elasticsearch en direct.

Nous aborderons les différents modules d'Elasticsearch dans les sections suivantes de ce chapitre.

Routage au niveau du cluster et allocation de fragments

Les paramètres au niveau du cluster décident de l'allocation des partitions à différents nœuds et de la réallocation des partitions pour rééquilibrer le cluster. Ce sont les paramètres suivants pour contrôler l'allocation des partitions.

Allocation de fragments au niveau du cluster

Réglage Valeur possible La description
cluster.routing.allocation.enable
tout Cette valeur par défaut autorise l'allocation de partitions pour tous les types de partitions.
primaires Cela autorise l'allocation de partitions uniquement pour les partitions principales.
new_primaries Cela permet l'allocation de fragments uniquement pour les fragments primaires pour les nouveaux indices.
aucun Cela n'autorise aucune allocation de partition.
cluster.routing.allocation .node_concurrent_recoveries Valeur numérique (par défaut 2) Cela limite le nombre de récupération de partition simultanée.
cluster.routing.allocation .node_initial_primaries_recoveries Valeur numérique (par défaut 4) Cela limite le nombre de récupérations primaires initiales parallèles.
cluster.routing.allocation .same_shard.host Valeur booléenne (par défaut false) Cela limite l'allocation de plusieurs répliques du même fragment dans le même nœud physique.
indices.recovery.concurrent _streams Valeur numérique (par défaut 3) Cela contrôle le nombre de flux réseau ouverts par nœud au moment de la récupération de partition à partir de partitions homologues.
indices.recovery.concurrent _small_file_streams Valeur numérique (par défaut 2) Cela contrôle le nombre de flux ouverts par nœud pour les petits fichiers dont la taille est inférieure à 5 Mo au moment de la récupération de la partition.
cluster.routing.rebalance.enable
tout Cette valeur par défaut permet l'équilibrage pour tous les types de fragments.
primaires Cela permet l'équilibrage des partitions uniquement pour les partitions principales.
répliques Cela permet l'équilibrage des fragments uniquement pour les fragments de réplique.
aucun Cela n'autorise aucun type d'équilibrage de partition.
cluster.routing.allocation .allow_rebalance
toujours Cette valeur par défaut autorise toujours le rééquilibrage.
indices_primaries _active Cela permet le rééquilibrage lorsque toutes les partitions principales du cluster sont allouées.
Indices_all_active Cela permet le rééquilibrage lorsque toutes les partitions principales et de réplique sont allouées.
cluster.routing.allocation.cluster _concurrent_rebalance Valeur numérique (par défaut 2) Cela limite le nombre d'équilibrages de partition simultanés dans le cluster.
cluster.routing.allocation .balance.shard Valeur flottante (par défaut 0.45f) Cela définit le facteur de pondération pour les fragments alloués sur chaque nœud.
cluster.routing.allocation .balance.index Valeur flottante (par défaut 0,55f) Ceci définit le rapport du nombre de fragments par index alloué sur un nœud spécifique.
cluster.routing.allocation .balance.threshold Valeur flottante non négative (par défaut 1.0f) Il s'agit de la valeur d'optimisation minimale des opérations à effectuer.

Allocation de fragments basée sur le disque

Réglage Valeur possible La description
cluster.routing.allocation.disk.threshold_enabled Valeur booléenne (par défaut true) Cela active et désactive le décideur d'allocation de disque.
cluster.routing.allocation.disk.watermark.low Valeur de chaîne (par défaut 85%) Cela dénote une utilisation maximale du disque; après ce point, aucune autre partition ne peut être allouée à ce disque.
cluster.routing.allocation.disk.watermark.high Valeur de chaîne (par défaut 90%) Cela indique l'utilisation maximale au moment de l'attribution; si ce point est atteint au moment de l'allocation, Elasticsearch allouera cette partition à un autre disque.
cluster.info.update.interval Valeur de chaîne (par défaut 30 s) Il s'agit de l'intervalle entre les vérifications de l'utilisation du disque.
cluster.routing.allocation.disk.include_relocations Valeur booléenne (par défaut true) Cela décide s'il faut prendre en compte les fragments actuellement alloués, lors du calcul de l'utilisation du disque.

Découverte

Ce module aide un cluster à découvrir et à maintenir l'état de tous les nœuds qu'il contient. L'état du cluster change lorsqu'un nœud y est ajouté ou supprimé. Le paramètre de nom de cluster est utilisé pour créer une différence logique entre différents clusters. Certains modules vous aident à utiliser les API fournies par les fournisseurs de cloud et ceux-ci sont indiqués ci-dessous -

  • Découverte Azure
  • Découverte EC2
  • Découverte du moteur de calcul Google
  • Découverte zen

passerelle

Ce module gère l'état du cluster et les données de partition lors des redémarrages complets du cluster. Voici les paramètres statiques de ce module -

Réglage Valeur possible La description
gateway.expected_nodes valeur numérique (par défaut 0) Nombre de nœuds censés se trouver dans le cluster pour la récupération des fragments locaux.
gateway.expected_master_nodes valeur numérique (par défaut 0) Nombre de nœuds maîtres censés se trouver dans le cluster avant de démarrer la récupération.
gateway.expected_data_nodes valeur numérique (par défaut 0) Nombre de nœuds de données attendus dans le cluster avant de démarrer la récupération.
gateway.recover_after_time Valeur de chaîne (par défaut 5 m) Il s'agit de l'intervalle entre les vérifications de l'utilisation du disque.
cluster.routing.allocation. disk.include_relocations Valeur booléenne (par défaut true)

Cela spécifie la durée pendant laquelle le processus de récupération attendra pour démarrer quel que soit le nombre de nœuds joints dans le cluster.

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Ce module gère la communication entre le client HTTP et les API Elasticsearch. Ce module peut être désactivé en modifiant la valeur de http.enabled sur false.

Voici les paramètres (configurés dans elasticsearch.yml) pour contrôler ce module -

S. Non Réglage et description
1

http.port

Il s'agit d'un port pour accéder à Elasticsearch et il va de 9200 à 9300.

2

http.publish_port

Ce port est destiné aux clients http et est également utile en cas de pare-feu.

3

http.bind_host

Il s'agit d'une adresse d'hôte pour le service http.

4

http.publish_host

Il s'agit d'une adresse d'hôte pour le client http.

5

http.max_content_length

Il s'agit de la taille maximale du contenu dans une requête http. Sa valeur par défaut est de 100 Mo.

6

http.max_initial_line_length

Il s'agit de la taille maximale de l'URL et sa valeur par défaut est de 4 Ko.

sept

http.max_header_size

Il s'agit de la taille maximale de l'en-tête http et sa valeur par défaut est de 8 Ko.

8

http.compression

Cela active ou désactive la prise en charge de la compression et sa valeur par défaut est false.

9

http.pipelinig

Cela active ou désactive le pipeline HTTP.

dix

http.pipelining.max_events

Cela limite le nombre d'événements à mettre en file d'attente avant de fermer une requête HTTP.

Les indices

Ce module gère les paramètres, qui sont définis globalement pour chaque index. Les paramètres suivants sont principalement liés à l'utilisation de la mémoire -

Disjoncteur

Ceci est utilisé pour empêcher l'opération de provoquer une OutOfMemroyError. Le paramètre limite principalement la taille du tas JVM. Par exemple, le paramètre indices.breaker.total.limit, qui correspond par défaut à 70% du tas JVM.

Cache de données de champ

Ceci est principalement utilisé lors de l'agrégation sur un champ. Il est recommandé d'avoir suffisamment de mémoire pour l'allouer. La quantité de mémoire utilisée pour le cache de données de champ peut être contrôlée à l'aide du paramètre indices.fielddata.cache.size.

Cache de requête de nœud

Cette mémoire est utilisée pour la mise en cache des résultats de la requête. Ce cache utilise la politique d'éviction LRU (Least Recent Used). Le paramètre Indices.queries.cahce.size contrôle la taille de la mémoire de ce cache.

Tampon d'indexation

Ce tampon stocke les documents nouvellement créés dans l'index et les vide lorsque le tampon est plein. Un paramètre comme indices.memory.index_buffer_size contrôle la quantité de tas allouée pour ce tampon.

Cache de demande d'éclat

Ce cache est utilisé pour stocker les données de recherche locales pour chaque partition. Le cache peut être activé lors de la création de l'index ou peut être désactivé en envoyant le paramètre URL.

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

Récupération des indices

Il contrôle les ressources pendant le processus de récupération. Voici les paramètres -

Réglage Valeur par défaut
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512 Ko
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512 Ko
indices.recovery.compress vrai
indices.recovery.max_bytes_per_sec 40 Mo

Intervalle TTL

L'intervalle de durée de vie (TTL) définit la durée d'un document après laquelle le document est supprimé. Voici les paramètres dynamiques pour contrôler ce processus -

Réglage Valeur par défaut
indices.ttl.interval Années 60
indices.ttl.bulk_size 1000

Nœud

Chaque nœud a la possibilité d'être un nœud de données ou non. Vous pouvez modifier cette propriété en modifiantnode.dataréglage. Définition de la valeur commefalse définit que le nœud n'est pas un nœud de données.