如何定期删除弹性搜索索引?
How to delete elastic search indices periodically?
我每天都创建索引来存储搜索历史,我在应用程序中使用这些索引作为建议,这也有助于我根据历史提出建议。
现在我只需要维护最近 10 天的历史记录。那么 Elasticsearch 有什么功能可以让我定期创建和删除索引吗?
我不知道 elasticsearch 是否有这样的内置功能,但你可以通过 curator 和 cron 作业实现你想要的。
一个示例 curator
命令是:
策展人 3.x 语法 [已弃用]:
curator --host <IP> delete indices --older-than 10 --prefix "index-prefix-" --time-unit days --timestring '%Y-%m-%d'
Curator 5.1.1 语法:
curator_cli --host <IP> --port <PORT> delete_indices --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":10},{"filtertype":"pattern","kind":"prefix","value":"index-prefix-"}]'
运行 此命令每天使用 cron 作业删除超过 10 天的索引,这些索引的名称以 index-prefix-
开头,并且存在于位于 <IP>
:[=15 的 Elasticsearch 实例上=].
有关更多馆长命令行选项,请参阅:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/singleton-cli.html
有关 cron 用法的更多信息,请参阅:
http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/
我唯一能想到的就是使用数据数学:
https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html
从某种意义上说,您可以这样做:
DELETE <logs-{now%2Fd-10d}>
由于 url 编码,这在 curl 中效果不佳。你可以在 curl:
中做这样的事情
curl -XDELETE 'localhost:9200/<logs-%7Bnow%2Fd-10d%7D>'
这两个示例都删除了 10 天前的索引。它不能帮助您删除超过 10 天的索引,认为这是不可能的。而且它们不是弹性搜索中的触发器或其他东西。
所以我会结合 curator 坚持 cron 作业,但你也可以选择这个选项。
我每天都创建索引来存储搜索历史,我在应用程序中使用这些索引作为建议,这也有助于我根据历史提出建议。
现在我只需要维护最近 10 天的历史记录。那么 Elasticsearch 有什么功能可以让我定期创建和删除索引吗?
我不知道 elasticsearch 是否有这样的内置功能,但你可以通过 curator 和 cron 作业实现你想要的。
一个示例 curator
命令是:
策展人 3.x 语法 [已弃用]:
curator --host <IP> delete indices --older-than 10 --prefix "index-prefix-" --time-unit days --timestring '%Y-%m-%d'
Curator 5.1.1 语法:
curator_cli --host <IP> --port <PORT> delete_indices --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":10},{"filtertype":"pattern","kind":"prefix","value":"index-prefix-"}]'
运行 此命令每天使用 cron 作业删除超过 10 天的索引,这些索引的名称以 index-prefix-
开头,并且存在于位于 <IP>
:[=15 的 Elasticsearch 实例上=].
有关更多馆长命令行选项,请参阅:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/singleton-cli.html
有关 cron 用法的更多信息,请参阅: http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/
我唯一能想到的就是使用数据数学: https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html
从某种意义上说,您可以这样做:
DELETE <logs-{now%2Fd-10d}>
由于 url 编码,这在 curl 中效果不佳。你可以在 curl:
中做这样的事情curl -XDELETE 'localhost:9200/<logs-%7Bnow%2Fd-10d%7D>'
这两个示例都删除了 10 天前的索引。它不能帮助您删除超过 10 天的索引,认为这是不可能的。而且它们不是弹性搜索中的触发器或其他东西。
所以我会结合 curator 坚持 cron 作业,但你也可以选择这个选项。