使用crontab自动删除Elasticsearch中超过1天的日志数据

时间:2014-05-21 10:33:25

标签: php elasticsearch crontab delete-file

由于大量日志数据进入我的小型服务器,我想每天使用crontab删除Elasticsearch日志数据。我在互联网上做了很多研究,并使用策展人或Elasticsearch _ttl找到了解决方案。但没有什么对我有用。现在我不知道如何谷歌或谷歌。因为我尝试了许多我在Google上找到的东西,但没有任何作用。所以请帮我一个明确的指示。

1 个答案:

答案 0 :(得分:4)

Elasticsearch 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在生成给定时间后删除文档。这对于记录用例是有问题的,原因与像delete from TABLE where datestamp < 2014.06.01这样的一百万个SQL语句比删除分区表一样昂贵,例如: drop table DATA-2014.05。涉及很多磁盘I / O,它可能会损害性能。如果您不是每秒连续索引数百(或更多)文档,那么TTL可能仍然适合您。详细了解here