Elasticsearch Reindex tous les indices et vérifiez le statut

Elasticsearch Reindex tous les indices et vérifiez le statut
Lorsque vous travaillez avec des bases de données, vous devrez inévitablement apporter des modifications telles que l'ajout, la suppression et la modification des données.

Lorsque vous modifiez les données dans un index Elasticsearch, cela peut conduire à des temps d'arrêt à mesure que la fonctionnalité est terminée et que les données sont réindexées.

Ce tutoriel vous donnera une bien meilleure façon de mettre à jour les indices sans subir de temps d'arrêt avec la source de données existante. En utilisant l'API de réindexer Elasticsearch, nous copierons les données d'une source spécifique à une autre.

Laissez-nous commencer.

NOTE: Avant de commencer, les opérations de réindexage sont lourdes de ressources, en particulier sur les grands indices. Pour minimiser le temps requis pour la réindexage, désactivez Number_Of_Replicas en définissant la valeur sur 0 et activez-leur une fois le processus terminé.

Activer le champ _Source

L'opération de réindexage nécessite que le champ source soit activé sur tous les documents de l'index source. Notez que le champ source n'est pas indexé et ne peut pas être recherché mais est utile pour diverses demandes.

Activez le champ _Source en ajoutant une entrée comme indiqué ci-dessous:

Mettre index_1

«Mappings»:
"_source":
"activé": vrai


Reindex tous les documents

Pour réindexer des documents, nous devons spécifier la source et la destination. La source et la destination peuvent être un index, un alias d'index et des flux de données existants. Vous pouvez utiliser des indices à partir du cluster local ou distant.

NOTE: Pour que l'indexation se produise avec succès, la source et la destination ne peuvent pas être similaires. Vous devez également configurer la destination selon les besoins avant de réindexer car elle n'applique pas les paramètres de la source ou de tout modèle associé.

La syntaxe générale pour le réindexage est:

Post / _reindex

Commençons par créer deux indices. Le premier sera la source, et l'autre sera la destination.

Put / source_index

"Paramètres": "numéro_of_replicas": 0, "numéro_of_shards": 1,
"mappings": "_source": "activé": true, "alias":
"alias_1": ,
"alias_2":
"Filter": "Term":
"utilisateur.id ":" kibana "
, "routage": "1"


La commande curl est:

curl -xput "http: // localhost: 9200 / source_index" -h 'contenu-type: application / json' -d '"paramètres": "numéro_of_replicas": 0, "number_of_shards": 1, "mappings" : "_source": "activé": true, "aliases": "alias_1": , "alias_2": "filter": "term": "utilisateur".id ":" kibana "," routage ":" 1 " '

Maintenant pour l'index de destination (vous pouvez utiliser la commande ci-dessus et modifier quelques choses ou utiliser celle donnée ci-dessous):

Put / destination_index

"Paramètres": "numéro_of_replicas": 0, "numéro_of_shards": 1,
"mappings": "_source": "activé": true, "alias":
"alias_3": ,
"alias_4":
"Filter": "Term":
"utilisateur.id ":" kibana "
, "routage": "1"


Comme toujours, les utilisateurs de Curl peuvent utiliser la commande:

curl -xput "http: // localhost: 9200 / destination_index" -h 'contenu-type: application / json' -d '"paramètres": "numéro_of_replicas": 0, "number_of_shards": 1, "mappings" : "_source": "activé": true, "aliases": "alias_3": , "alias_4": "filter": "term": "utilisateur".id ":" kibana "," routage ":" 1 " '

Maintenant, nous avons les indices que nous voulons utiliser, nous pouvons ensuite passer à la réindexer les documents.

Considérez la demande ci-dessous qui copie les données de Source_index à Destination_index:

Post _reindex

"source":
"index": "source_index"
,
"dest":
"index": "destination_index"

La commande curl pour ceci est:

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

L'exécution de cette commande devrait vous donner des informations détaillées sur l'opération effectuée.

NOTE: La source_index devrait avoir des données.


"Taked": 2836,
"timed_out": faux,
"Total": 13059,
"Mis à jour": 0,
"Créé": 13059,
"supprimé": 0,
"Batches": 14,
"version_conflicts": 0,
"Noops": 0,
"Retries":
"en vrac": 0,
"Recherche": 0
,
"Throttled_millis": 0,
"requêtes_per_second": -1.0,
"Throttled_until_millis": 0,
"les échecs" : [ ]

Vérification du statut de réindexation

Vous pouvez afficher l'état des opérations de réindexage en utilisant simplement les _Tasks. Par exemple, considérez la demande ci-dessous:

Get / _Tasks?Détaillé = True & Actions = * Reindex & Group_By = Parents

La commande curl est:

curl -xget "http: // localhost: 9200 / _tasks?Détaillé = True & Actions = * Reindex & Group_By = Parents "

Cela devrait vous donner des informations détaillées sur le processus de réindexation comme indiqué ci-dessous:


"Tâches" :
"Ftd_2ixjsxudn_ua4tzhhg: 51847":
"node": "ftd_2ixjsxudn_ua4tzhhg",
"ID": 51847,
"Type": "Transport",
"Action": "Indices: données / écriture / réindex",
"statut" :
"Total": 13059,
"Mis à jour": 9000,
"Créé": 0,
"supprimé": 0,
"Batches": 10,
"version_conflicts": 0,
"Noops": 0,
"Retries":
"en vrac": 0,
"Recherche": 0
,
"Throttled_millis": 0,
"requêtes_per_second": -1.0,
"Throttled_until_millis": 0
,
"Description": "Reindex de [source_index] à [destination_index] [_ doc]",
"start_time_in_millis": 1611247308063,
"running_time_in_nanos": 2094157836,
"CANCELLable": vrai,
"en-têtes":


Conclusion

Nous avons couvert tout ce que vous devez savoir sur l'utilisation de l'API de réindexer Elasticsearch pour copier des documents d'un index (source) à une autre (destination). Bien qu'il y ait plus à l'API de réindexer, ce guide devrait vous aider à démarrer.