【发布时间】:2016-03-14 04:58:55
【问题描述】:
如何从弹性搜索索引中删除旧数据,因为索引每天都会插入大量数据。
【问题讨论】:
-
为什么这个问题被否决了?
标签: elasticsearch elasticsearch-plugin
如何从弹性搜索索引中删除旧数据,因为索引每天都会插入大量数据。
【问题讨论】:
标签: elasticsearch elasticsearch-plugin
您可以使用delete by query 插件来做到这一点。
假设您的索引中有一些 timestamp 或 creation date 字段,您的查询将如下所示
DELETE /your_index/your_type/_query
{
"query": {
"range": {
"timestamp": {
"lte": "now-10y"
}
}
}
}
这将删除超过 10 年的记录。
希望对你有帮助
【讨论】:
cron job 每天执行此操作,执行删除后记录不被删除,它们被标记为已删除和在段合并期间它们实际上被删除了,您可能会看到删除或更新后索引大小增加,您可以使用force merge 来优化您的索引
将数据拆分为每日索引并使用别名作为旧索引名称。然后每天删除每个索引。就像logstash:
每日指数:logstash-20151011,logstash-20151012,logstash-20151013.
完整别名:logstash
然后每天删除最后一个索引。
【讨论】:
如果您使用基于时间的索引,则应类似于:
curl -XDELETE http://localhost:9200/test-2017-06
【讨论】: