2016-07-26 60 views
0

我在日常基礎上創建了索引來存儲搜索歷史,我將這些索引用於我的應用中的建議,這也有助於我根據歷史記錄進行建議。如何定期刪除彈性搜索索引?

現在我只能維持最近10天的歷史。那麼彈性搜索中是否有任何功能可以讓我定期創建和刪除索引?

回答

0

我能想到的是用數據運算的唯一的事情: https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html

從這個意義上說,您可以這樣做:

DELETE <logs-{now%2Fd-10d}> 

儘管由於URL編碼,但這並不適用於捲曲。你可以在curl中做這樣的事情:

curl -XDELETE 'localhost:9200/<logs-%7Bnow%2Fd-10d%7D>' 

這兩個例子都刪除了10天前的索引。它不會幫助您刪除超過10天的指數,不認爲這是可能的。而且它們在彈性搜索中沒有觸發器或某種東西。

因此,我會堅持與策展人結合使用cron作業,但您也有此選項。

6

我不知道elasticsearch是否具有這樣的內置功能,但是您可以通過curator和cron作業實現您想要的功能。

一個例子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作業刪除大於10天的索引,其名稱以index-prefix-開頭,並位於Elasticsearch實例上,位於<IP><PORT>

更多館長命令行選項,請參閱: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/

+0

謝謝alpert迴應。我在我的應用程序中有這樣的功能。正在尋找從彈性搜索的任何內置功能 –

+0

您可以使用'_ttl',但它不會刪除索引只是文件。 – alpert

+0

'_ttl'在Elasticsearch 2.x中已棄用。策展人仍然是要走的路。上面的答案是Curator 3.x語法。策展人4現在出來並使用YAML配置文件。 – untergeek