由于大量日志数据进入我的小型服务器,我想每天使用 crontab 删除 Elasticsearch 日志数据。我在互联网上做了很多研究,并找到了使用 curator 或 Elasticsearch _ttl 的解决方案。但对我来说没有任何作用。现在我不知道如何谷歌或谷歌什么。因为我已经尝试了很多在谷歌上找到的东西,但没有任何效果。所以请帮我一个明确的指示。
最佳答案
Elasticsearch Curator只能删除索引,不能删除索引中存储的单个文档。
如果您尝试删除索引,并且您的索引名称符合预期标准,那么 Curator 将完成这项工作。
Curator 希望索引具有前缀和时间字符串。例如--prefix logstash- --timestring %Y.%m.%d
将匹配名为 logstash-2014.07.30
的索引
用于删除符合这些条件的索引的 Curator 命令:
- 连接到elasticsearch主机
es-host
- 时间单位
days
- 索引早于 1
time-unit
- 前缀
prod-
- 时间字符串year.month.day (
%Y.%m.%d
) 可能如下所示:
curator --host es-host delete indices --older-than 1 --time-unit days --prefix prod- --timestring %Y.%m.%d
TTL 用于让 Elasticsearch 在文档存在给定时间后删除它们。这对于记录用例来说是有问题的,原因与一百万个 SQL 语句(如 delete from TABLE where datestamp < 2014.06.01
)相同。比删除分区表的成本更高,例如drop table DATA-2014.05
。涉及大量磁盘 I/O,这会损害性能。如果您不是每秒连续索引数百(或更多)文档,那么 TTL 可能仍然适合您。查看更多相关信息 here .
关于php - 使用 crontab 自动删除 Elasticsearch 中超过 1 天的日志数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23780649/