Je souhaite supprimer les documents de mon index elasticsearch qui datent de plus de 30 jours.
Des idées?
ÉDITER:
Je veux que cela se produise automatiquement - aucun document de mon index ne doit avoir plus de 30 jours. Donc, à mon avis, il y a 2 options: soit en utilisant le curateur, soit en supprimant les requêtes.
J'ai essayé les deux, mais j'ai échoué. D'une manière ou d'une autre, je dois créer un filtre qui filtre tous les documents de plus de 30 jours et les supprime, lorsque j'utilise l'instruction DELETE http.
J'ai essayé avec le conservateur, mais le conservateur (pour autant que je sache) ne supprime que les indices entiers. Lorsque j'essaie de supprimer des index de plus de 30 jours avec le conservateur, mon horodatage provoque des erreurs.Mon moment.js
le modèle ressemble à ceci"MMMM Do YYYY, HH:mm:ss.SSS"
.
EDIT 2: J'ai ajouté ce qui suit à ma configuration de logstash:
elasticsearch
{
hosts => ["http://localhost:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
Logstash crée donc pour chaque type et chaque jour un index particulier. Maintenant, je peux utiliser le conservateur pour supprimer les indices antérieurs à une date spécifique.
Problème résolu à mon humble avis.
Vous pouvez utiliser la requête DELETE
pour cela: https://www.elastic.co/guide/en/elasticsearch/reference/1.6/docs-delete-by-query.html in exemple, la requête supprimera tout ce qui est plus ancien que: 2016-02-29
DELETE index_name/_query
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*"
}
},
"filter": {
"range": {
"@timestamp": {
"lte": "2016-02-29"
}
}
}
}
}
}
Mise à jour> 6.4
Selon la documentation officielle, cette fonction est obsolète et remplacée par _delete_by_query
POST index_name/_delete_by_query
{
"query": {
"match": {
"message": "some message"
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html