Elasticsearch Reindex en place

Elasticsearch Reindex en place
L'indexation Elasticsearch est une caractéristique importante qui permet au moteur de fonctionner rapidement et avec précision.

Cependant, comme vous le savez, une fois que les données sont mappées dans un index, elle est non modifiable. Pour ce faire, vous devrez réindexer les données avec les modifications dont vous avez besoin. Ce processus peut conduire à des temps d'arrêt, ce qui n'est pas une très bonne pratique, en particulier pour un service qui est déjà en circulation.

Pour contourner cela, nous pouvons utiliser des alias d'index, qui nous permettent de basculer entre les indices de manière transparente.

Comment créer un index?

La première étape consiste à vous assurer d'avoir un index existant que vous souhaitez mettre à jour les données.

Pour ce tutoriel, nous aurons un ancien et nouvel index qui fonctionnera comme leurs noms.

Put / old_index /

"paramètres":
"numéro_of_shards": 1
,
"alias":
"Utilisez moi":
,
«Mappings»:
"propriétés":
"nom":
"type": "texte"
,
"identifiant":
"type": "entier"
,
"payé":
"Type": "booléen"



Pour les utilisateurs de Curl, utilisez la commande annexe:

curl -xput "http: // localhost: 9200 / old_index /" -h 'contenu-type: application / json' -d '"paramètres": "numéro_of_shards": 1, "aliases": "use_me" : , "mappings": "Properties": "name": "type": "text", "id": "type": "entier", "payé": "type ":" booléen " '

Ensuite, créez un nouvel index que nous allons utiliser. Copiez tous les paramètres et mappages de l'ancien index comme:

Put / new_index

"paramètres":
"numéro_of_shards": 1
,
"alias":
"Utilisez moi":
,
«Mappings»:
"propriétés":
"nom":
"type": "texte"
,
"identifiant":
"type": "entier"
,
"payé":
"type": "objet"



Voici la commande Curl:

curl -xput "http: // localhost: 9200 / new_index" -h 'contenu-type: application / json' -d '"paramètres": "numéro_of_shards": 1, "aliases": "use_me": , "Mappings": "Propriétés": "Name": "Type": "Text", "ID": "Type": "Integer", "Payé": "Type" : "objet" '

Ayant le réglage et les mappages dans le nouvel index, utilisez l'API Reindex pour copier les données de l'ancien index vers le nouveau:

Post _reindex

"source":
"index": "old_index"
,
"dest":
"index": "new_index"

Voici la commande Curl:

curl -xpost "http: / localhost: 9200 / _reindex" -h 'contenu-type: application / json' -d '"source": "index": "old_index", "dest": "index" : "new_index" '

Maintenant, copiez l'alias de l'ancien index vers le nouveau à l'aide de l'API _alias comme:

Post / _aliases

"Actions" : [
"add": "index": "new_index", "alias": "use_me"
]]

Voici la commande Curl:

curl -xpost "http: // localhost: 9200 / _aliases" -h 'content-type: application / json' -d '"actions": ["add": "index": "new_index", "alias" " : "Utilisez moi" ]'

Une fois terminé, vous pouvez désormais supprimer l'ancien index et les applications utiliseront le nouvel index (en raison de l'alias) sans temps d'arrêt.

Conclusion

Une fois que vous maîtrisez les concepts discutés dans ce tutoriel, vous serez en mesure de réindexer les données d'un ancien index à un nouveau en place.