Copie données ElasticSearch
Lors de l'utilisation de ElasticSearch
, il peut être nécessaire de dupliquer des données d'un indexe à un autre. Cet article présente cette opération avec le rennomage d'un champs. Ceci a été nécessaire suite à une modification de la configuration de lecture de fichier trace par Logstash
, où le premier mapping ne prenait pas correctement en compte la géolocalisation.
Sommaire
Votre avis
Nobody voted on this yet
|
|
Objectif
Pour cet article, l'objectif est de dupliquer toutes les données des indexes fail2ban-2018.04
et fail2ban-2018.05
vers f2b-2018.04
et f2b-2018.05
, avec un renommage de la propriété clientip
en ip
.
L'API _reindex
, en mode POST
, est utilisée avec un script permettant d'effectuer le renommage. Il suffit de fournir l'indexe origine ainsi que la cible.
Un exemple est fournie dans la documentation officielle : https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#docs-reindex-change-name
Exécution
L'exécution peut se faire facilement en ligne de commande.
Le premier exemple permet de copier les données de fail2ban-2018.04
vers f2b-2018.04
.
#curl -X POST "localhost:9200/_reindex" -H 'Content-Type: application/json' -d' { "source": { "index": "fail2ban-2018.04" }, "dest": { "index": "f2b-2018.04" }, "script": { "inline": "ctx._source.ip = ctx._source.remove(\"clientip\")" } } ' {"took":4435,"timed_out":false,"total":2929,"updated":0,"created":2929,"deleted":0,"batches":3,"version_conflicts":0,"noops":0,"retries":{"bulk":0,"search":0},"throttled_millis":0,"requests_per_second":-1.0,"throttled_until_millis":0,"failures":[]}
A noter le contenu du noeud script
dans lequel une opération "en ligne" est exécutée afin de recopier la valeur de clientip
vers ip
, puis de la supprimer.
De la même façon, le conteun de l'index fail2ban-2018.05
est copié vers f2b-2018.05
. L'utilisation de l'argument pretty
permet d'optenir un affichage plus lisible.
#curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d' { "source": { "index": "fail2ban-2018.05" }, "dest": { "index": "f2b-2018.05" }, "script": { "inline": "ctx._source.ip = ctx._source.remove(\"clientip\")" } } ' { "took" : 18129, "timed_out" : false, "total" : 28482, "updated" : 0, "created" : 28482, "deleted" : 0, "batches" : 29, "version_conflicts" : 0, "noops" : 0, "retries" : { "bulk" : 0, "search" : 0 }, "throttled_millis" : 0, "requests_per_second" : -1.0, "throttled_until_millis" : 0, "failures" : [ ] }
Voir aussi
Documentation officielle: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#docs-reindex-change-name