我每天都会创建索引以存储搜索历史记录,并且我在我的应用程序中使用这些索引作为建议,这也有助于我根据历史记录进行建议。
现在我必须保持最近10天的历史。那么弹性搜索中是否有任何功能允许我定期创建和删除索引?
答案 0 :(得分:7)
我不知道elasticsearch是否具有这样的内置功能,但您可以通过curator和cron作业实现您想要的功能。
示例curator
命令是:
Curator 3.x语法[不建议使用]:
curator --host <IP> delete indices --older-than 10 --prefix "index-prefix-" --time-unit days --timestring '%Y-%m-%d'
策展人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作业运行此命令,以删除名称以index-prefix-
开头并且位于<IP>
上的Elasticsearch实例{/ 1}}的10天以上的索引。
有关更多策展人命令行选项,请参阅: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/
答案 1 :(得分:3)
我唯一能想到的是使用数据数学: 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天的索引,不认为这是可能的。而且它们不是弹性搜索中的触发器。
所以我会坚持与策展人一起完成一项cron工作,但你也可以选择这个选项。