Elasticsearch - Suppression en masse de documents dans un index.
Alasta 25 Février 2017 bigdata elk elasticsearch
Description : Nous allons voir comment certains documents d'un index.
Contexte :
Il est parfois necessaire de supprimer des documents d’un index, cela devient ennuyant quand il y en a de un volume important.
Différentes façon de supprimer ces documents :
Suppression par type :
Comme les logs d’accès d’Apache
curl -XDELETE 'http://localhost:9200/logstash-2014.08.22/apacheaccesslogs'
Quick and durty :
for seq in $(seq 1 150)
do
for i in $(curl -s -XGET 'localhost:9200/logstash-2017.02.03/_search?pretty&size=10000' -d '
{
"query": { "match": { "message": "flipperledophin" } }
}' | grep _id | awk -F'"' '{print $4}'); do curl -XDELETE http://localhost:9200/logstash-2017.02.03/syslog-flipper/${i}; done
done
C’est une manière assez rapide mais sale, et très longue quand il y a beaucoup de données. Il faut aussi connaître plus ou moins le nombre de documents à supprimer pour paramétrer la boucle.
On est obliger de faire une première boucle car ES ne renvoie qu’au max 10000 résultats.
Plugins delete
Il faut installer le plugin “delete-by-query”, voir la documentation pour l’installer en fonction de la version d’ES.
Redémarrer ES
service elasticsearch restart
Vérifier que tous les shards sont bien assignés :
curl http://127.0.0.1:9200/_cat/allocation
Suppression en masse (plus rapide que la méthode quick and dirty)
A venir ...