Index de renom sur Elasticsearch

Index de renom sur Elasticsearch

Un index ou des indices Elasticsearch est (sont) une structure de données qui contient des mappages pour divers documents. Dans une base de données relationnelle, un index pourrait se référer à une base de données spécifique.

Un cluster Elasticsearch contient plusieurs indices, dont plusieurs types, qui détiennent ensuite les documents.

Les éléments suivants pourraient représenter la relation Elasticsearch avec une base de données relationnelle.

  • PostgreSQL -> Base de données -> Table -> ligne / colonne
  • Elasticsearch -> Index -> Type -> Document

Dans ce guide, nous discuterons de diverses méthodes pour renommer un index Elasticsearch existant.

Méthode 1: Reindexing

La première méthode que nous pouvons utiliser lors du renommer un index est l'API de réindexer. Cette API vous permet de copier des documents d'un index source à un index de destination spécifié.

Cependant, l'API Reindex ne copie pas la configuration de l'index source vers la destination. Par conséquent, nous devons configurer l'index de destination et appliquer la configuration de l'index source avant d'appeler Reindex.

Nous pouvons implémenter une opération complète de réin-index en suivant les étapes décrites ci-dessous:

  1. Créer un nouvel index Elasticsearch (source)
  2. Retrouvez la configuration de l'index et enregistrez-le.
  3. Créez un nouvel index (destination) avec la configuration de l'index source.
  4. Appelez l'API Reindex de la source à la destination
  5. Supprimer l'index source.

Si vous avez un indice Elasticsearch existant, n'hésitez pas à passer à l'étape 2

NOTE: Dans ce guide, nous fournirons toutes les demandes Elasticsearch pour Curl.

Étape 1: Créez un nouvel index
Créons un index qui agira comme la source. Pour plus de simplicité, nous utiliserons une configuration d'index simple avec la plupart des paramètres par défaut.

Nous soumettrons une demande au point de terminaison Elasticsearch HTTP.

Un exemple de demande pour créer un index «Test-Index» est ci-dessous:

curl -xput "http: // localhost: 9200 / test-index" -h 'contenu-type: application / json' -d '

"paramètres":
"index":
"numéro_of_shards": 3,
"numéro_of_replicas": 2

,
"Mappings":
"propriétés":
"field1": "type": "texte"


'

L'étape suivante consiste à ajouter des données à l'index créé. Par défaut, l'index ne contient aucun document.

curl -xget http: // localhost: 9200 / _cat / indices / test-index \?V

Pour ajouter des données à l'index, exécutez la demande:

La demande ci-dessus doit créer un document dans l'index de test-indice.

Nous pouvons vérifier que le document existe en utilisant la demande GET au point de terminaison de l'index.

curl -xget "http: // locahost: 9200 / test-index / _search" -h 'contenu-type: application / json' -d '

"Query": "match_all":
'
'

Un exemple de sortie est indiqué:

Étape 2: Reprochez la configuration de la source
L'étape suivante avant d'effectuer une opération Reindex est de copier la configuration de l'index source.

Nous allons commencer par obtenir le paramètre d'index. Pour ce faire, nous envoyons une demande HTTP Get à l'API _setting.

Paramètres = $ (curl -xget "https: // localhost: 9200 / test-index / _settings")

Nous enregistrons la sortie dans une variable que nous pouvons vérifier à l'aide de la commande:

Echo $ Paramètres | jq

Étant donné que la sortie est au format JSON, nous la transmettons à un processeur JSON tel que JQ. Un exemple de sortie est comme indiqué:

L'étape suivante consiste à obtenir le mappage de l'index. Dans ce cas, nous enverrons une demande GET au point de terminaison _mapping comme:

mapping = $ (curl -xget "https: // localhost: 9200 / test-index / _mapping")

Vérifiez que la sortie est enregistrée dans la variable:

Echo $ mappage | jq

La sortie est comme indiqué:

Ensuite, combinez la sortie du paramètre $ et du mappage $ à un seul format JSON.

Ce qui suit est une capture d'écran tronquée des deux sorties combinées (config.JSON).

Étape 3: Créez un nouvel index
Il est maintenant temps de créer un nouvel index avec la configuration de sauvegarde. Assurez-vous que votre configuration ne contient aucune erreur.

Exécutez la commande comme:

curl -xput "http: // localhost: 9200 / renommé-index" -h 'contenu-type: application / json' -d config.JSON '

Ce qui suit est le contenu de la configuration, le fichier JSON utilisé dans ce tutoriel.

Après une création réussie, vous devriez voir reconnu: vrai comme indiqué:

Étape 4: Reindex
Maintenant que nous avons un index renommé similaire à l'index source, nous pouvons copier les données de la source à la destination à l'aide de l'API Reindex.

curl -xpost "http: // localhost: 9200 / _reindex" -h 'contenu-type: application / json' -d '

"source":
"Index": "Test-Index"
,
"dest":
"Index": "Renommé Index"

'

Une fois que vous avez fait la demande Reindex, Elasticsearch copiera les données de l'index de source spécifiée vers l'index de destination.

Voici un exemple de sortie:

Étape 5: Supprimer l'index source
Il n'a pas de sens d'avoir deux indices avec une configuration et des données similaires. Par conséquent, nous pouvons supprimer l'index source:

curl -xdelete http: // localhost: 9200 / test-index

"Reconnu": vrai

Méthode 2: API de clone

Le deuxième moyen le plus simple de renommer et d'indexer est d'utiliser l'API Clone introduit dans Elasticsearch version 7.4 et plus.

Pour utiliser l'API Clone, vous devez vous assurer que l'index source est en lecture seule et que la santé du cluster est verte.

Comment fonctionne le clonage
Le clonage fonctionne comme suit:

  • Créer un nouvel index Elasticsearch. Le nouvel index doit contenir des définitions identiques comme l'ancien index (index source).
  • L'étape suivante consiste à effectuer un segment de liaison dure de l'index source vers le nouvel index Elasticsearch.
  • Une fois le lien dur effectué, le nouvel index est rouvert avec les définitions et les données de l'ancien index.

Étape 1: Définissez l'index de la source en lecture seule
Pour définir l'index source en mode en lecture seule, nous utilisons l'API _Settings et passons les informations comme indiqué dans la demande ci-dessous:

curl -xput "http: // localhost: 9200 / test-index / _settings" -h 'contenu-type: application / json' -d '

"paramètres":
"indice.blocs.écrire ": vrai

'

Étape 2: Index de la source de clone vers la cible
Pour cloner l'index de test à un nouvel index appelé index renommé-cliché, nous pouvons exécuter la demande comme indiqué:

curl -xpost “http: // localhost: 9200 / test-indice/ _clone / renommé-cloné-indice"

En supposant que les exigences suivantes sont vraies, vous devriez avoir un indice renommé de l'indice source.

  1. L'indice cible spécifié ne doit pas exister.
  2. Le nœud a suffisamment d'espace pour stocker l'index cloné
  3. L'indice source a un nombre égal d'éclats primaires comme l'indice cible spécifié.

Conclusion

Dans ce guide, nous avons couvert comment renommer un index Elasticsearch en utilisant deux méthodes.

Merci pour la lecture!