English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Module d'Elasticsearch

Elasticsearch est composé de nombreux modules, qui sont responsables de ses fonctionnalités. Ces modules ont deux types de paramètres, comme indiqué ci-dessous :

  • Paramètres statiques−Avant de démarrer Elasticsearch, il est nécessaire de configurer ces paramètres dans le fichier config(elasticsearch.yml). Vous devez mettre à jour tous les noeuds du cluster pour refléter les modifications apportées à ces paramètres.

  • Paramètres dynamiques −Ces paramètres peuvent être configurés sur une Elasticsearch en temps réel.

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

Routage et allocation de fragments au niveau du cluster

Les paramètres de niveau de cluster déterminent l'allocation des fragments aux différents noeuds et la redistribution des fragments pour rééquilibrer le cluster. Voici les paramètres de contrôle de l'allocation des fragments.

Allocation de fragments au niveau du cluster

ConfigurationValeurs possiblesDescription
cluster.routing.allocation.enable

all

Cette valeur par défaut autorise l'allocation de fragments pour tous les types de fragments.

primaries

Cela autorise uniquement l'allocation de fragments pour les fragments principaux.

new_primaries

Cela autorise uniquement l'allocation de fragments pour les fragments principaux de nouveaux indices.

aucun

Cela n'autorise aucune allocation de fragment.

cluster.routing.allocation.node_concurrent_recoveries

Valeur numérique (par défaut valeur)2)

Cela limite le nombre de restaurations de fragments en parallèle.

cluster.routing.allocation.node_initial_primaries_recoveriesvaleur numérique (par défaut)4)

Cela limite le nombre de restaurations initiales principales en parallèle.

cluster.routing.allocation.same_shard.hostValeur booléenne (par défaut false)

Cela limite le nombre de copies de la même piste allouées sur le même noeud physique.

index.recovery.concurrent_streamsvaleur numérique (par défaut)3)

Cela contrôle le nombre de flux réseau ouverts sur chaque noeud lors de la récupération des fragments des pairs.

index.recovery.concurrent_small_file_streamsvaleur numérique (par défaut)2)

Cela peut contrôler la taille inférieure pendant la récupération des fragments.5Le nombre de flux réseau ouverts sur chaque noeud pour les petits fichiers de mb.

cluster.routing.rebalance.enable

all

Cette valeur par défaut permet de balancer tous les types de fragments.

primaries

Cela n'autorise que la balance de fragments des piste principales.

replicas

Cela n'autorise que la balance de fragments des copies.

aucun

Cela n'autorise aucune forme de balance de fragments.

cluster.routing.allocation .allow_rebalance

toujours

Cette valeur par défaut permet toujours de rebalancer.

indexs_primaries_active

Cela permet de rebalancer lors de l'allocation de toutes les piste principales du cluster.

Indices_all_activeCela permet de rebalancer lors de l'allocation de toutes les piste principales et des copies.
cluster.routing.allocation.cluster _concurrent_rebalancevaleur numérique (par défaut)2)

Cela limite le nombre de balance de fragments concurrents dans le cluster.

cluster.routing.allocation .balance.shardvaleur flottante (par défaut 0.)45f)

Cela définit le facteur de pondération des fragments alloués à chaque noeud.

cluster.routing.allocation .balance.indexvaleur flottante (par défaut 0.)55f)

Cela définit le ratio du nombre de fragments de chaque index alloués sur un noeud spécifique.

cluster.routing.allocation .balance.thresholdvaleur flottante non négative (par défaut)1.0f)

C'est la valeur minimale d'optimisation à exécuter.

Allocation de piste basée sur le disque

ConfigurationValeurs possiblesDescription
cluster.routing.allocation.disk.threshold_enabled

Valeur booléenne (par défaut true)

Cela permet d'activer et de désactiver le programme de décision d'allocation de disque.
cluster.routing.allocation.disk.watermark.low

Valeur de chaîne (par défaut)85%)

Cela représente le taux d'utilisation maximale du disque ; après cela, il ne sera pas possible d'allouer d'autres piste à ce disque.
cluster.routing.allocation.disk.watermark.high

valeur en chaîne (par défaut)90%)

Cela signifie que la quantité maximale d'utilisation est atteinte lors de l'allocation ; si cela se produit lors de l'allocation, Elasticsearch attribuera cette piste à un autre disque.
cluster.info.update.interval

valeur en chaîne (par défaut)30s)

C'est l'intervalle entre deux vérifications de l'utilisation du disque.
cluster.routing.allocation.disk.include_relocations

Valeur booléenne (par défaut true)

Cela détermine si les fragments attribués actuels doivent être pris en compte lors du calcul du taux d'utilisation du disque.

Découverte

Ce module aide le cluster à découvrir et à maintenir l'état de tous les nœuds du cluster. Lorsque des nœuds sont ajoutés ou supprimés du cluster, l'état du cluster change. La configuration du nom de cluster permet de créer des différences logiques entre différents clusters. Il existe certains modules qui peuvent vous aider à utiliser les API fournies par les fournisseurs de clouds, comme suit-

  • Découverte Azure

  • EC2Découverte

  • Découverte Google Compute Engine

  • Découverte Zen

Passerelle

Ce module conserve l'état du cluster et les données de sharding lors du redémarrage complet du cluster. Voici les paramètres statiques de ce module-

ConfigurationValeurs possiblesDescription
gateway.expected_nodes

Valeur numérique (par défaut 0)

Le nombre de nœuds dans le cluster utilisés pour la récupération des fragments locaux.
gateway.expected_master_nodes

Valeur numérique (par défaut 0)

Le nombre prévu de nœuds principaux dans le cluster avant le début de la récupération.
gateway.expected_data_nodes

Valeur numérique (par défaut 0)

Le nombre prévu de nœuds de données dans le cluster avant le début de la récupération.
gateway.recover_after_time

Valeur de chaîne (par défaut)5m)

C'est l'intervalle entre deux vérifications de l'utilisation du disque.
cluster.routing.allocation. disk.include_relocations

Valeur booléenne (par défaut true)

Cela spécifie le moment où le processus de récupération commencera, indépendamment du nombre de nœuds rejoignant 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 l'API Elasticsearch. Vous pouvez désactiver ce module en changeant la valeur de http.enabled en false.

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

NuméroConfiguration et description
1

http.port

C'est le port d'accès à Elasticsearch, allant de9200-9300.

2

http.publish_port

Ce port est utilisé par le client HTTP, il est également très utile dans le cas de pare-feu.

3

http.bind_host

C'est l'adresse principale de l'hôte du service HTTP.

4

http.publish_host

C'est l'adresse principale de l'hôte client HTTP.

5

http.max_content_length

C'est la taille maximale du contenu de la requête http. Sa valeur par défaut est100mb.

6

http.max_initial_line_length

C'est la taille maximale de l'URL, avec une valeur par défaut de4ko.

7

http.max_header_size

C'est la taille maximale de l'en-tête HTTP, avec une valeur par défaut de8ko.

8

http.compression

Cela active ou désactive le support pour la compression, avec une valeur par défaut de false.

9

http.pipelinig

Cela active ou désactive le pipeline HTTP.

10

http.pipelining.max_events

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

Index

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

Circuit-bailleur

Cela sert à éviter les erreurs OutOfMemoryError causées par les opérations. Ce paramètre limite principalement la taille de la pile JVM. Par exemple, le paramètre indexs.breaker.total.limit, par défaut à la taille de la pile JVM de70%.

Cache des données de champ

Il est principalement utilisé pour l'agrégation sur les champs. Il est recommandé d'avoir suffisamment de mémoire pour l'allouer. Le paramètre index.fielddata.cache.size peut être utilisé pour contrôler la quantité de mémoire utilisée pour le cache des données de champ.

Cache des requêtes de noeud

Cette mémoire est utilisée pour stocker les résultats des requêtes. Ce cache utilise la stratégie d'éviction de la plus récente (LRU). Le paramètre Indices.queries.cache.size contrôle la taille de la mémoire de ce cache.

Tampon d'index

Ce tampon stocke les documents nouvellement créés dans l'index et les actualise lorsque le tampon est plein. Les paramètres tels que indexs.memory.index_buffer_size contrôlent le nombre de piles allouées à ce tampon.

Cache des requêtes de shard

Ce cache est utilisé pour stocker les données de recherche locales de chaque shard. Le cache peut être activé pendant la création de l'index ou désactivé via un paramètre d'URL.

Désactiver le cache - ?request_cache = true
Activer le cache "index.requests.cache.enable": true

Récupération de l'index

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

ConfigurationValeur par défaut
indices.recovery.concurrent_streams3
indices.recovery.concurrent_small_file_streams2
indices.recovery.file_chunk_size512ko
indices.recovery.translog_ops1000
indices.recovery.translog_size512ko
indices.recovery.compresstrue
indices.recovery.max_bytes_per_sec40mb

Intervalle TTL

L'intervalle de temps de vie (TTL) définit le temps de vie d'un document après lequel ce document sera supprimé. Voici les paramètres dynamiques utilisés pour contrôler ce processus-

ConfigurationValeur par défaut
indices.ttl.interval60s
indices.ttl.bulk_size1000

Nœud

Chaque nœud peut choisir s'il s'agit d'un nœud de données. Vous pouvez modifier cette propriété en changeant le paramètre node.data. Définissez cette valeur sur false pour indiquer que ce nœud n'est pas un nœud de données.