我想知道如何设置TTL,以便ES群集自动删除超过30天的每个文档。我知道以前的版本使用TTL字段来管理这个,但现在似乎它被删除了。我使用的是NEST.NET 6.4.0
mrzz3bfm1#
TTL在5.0中已删除您可以使用Curator,将其安排为cronjob或jenkins作业,并一起删除旧索引。
curator_cli --host localhost --port 9200 --http_auth "$USER":"$PASS" \ delete_indices --ignore_empty_list --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":30}, \ {"filtertype":"pattern","kind":"prefix","value":"livelogs"}]'
另请参阅:Is there a way to Set ttl in elastic search index
gcxthw6b2#
让我们试试这个办法。
**首先,**创建一个策略来描述何时删除索引
PUT〈-您的策略名称
{ "policy": { "phases": { "hot": { "min_age": "0ms", "actions": { "set_priority": { "priority": 0 } } }, "delete": { "min_age": "2d", <-- Set your TTL here "actions": { "delete": { "delete_searchable_snapshot": true } } } } } }
**接下来,**创建一个模板以选择使用此策略的索引类型。
在两天后删除
{ "index_patterns": [ "test*" <-- Choose your index here ], "template": { "settings": { "number_of_shards": 1, "number_of_replicas": 1, "index.lifecycle.name": "delete_log_after_2day" } } }
现在,当您创建一个新的索引示例时:test 001,它将在2天后自动删除。
**注意:**对于旧索引,它不会分配给新策略,因此除非您分配它,否则它不会被删除.
您可以使用此API将所有旧索引分配给策略PUT http://localhost:9200/test */_settings〈--您的旧索引在这里,可以使用模式
{ "index": { "lifecycle": { "name": "delete_log_after_2day" <-- Your policy name } } }
然后在到期日期之后,所有旧索引都将被完全删除。
2条答案
按热度按时间mrzz3bfm1#
TTL在5.0中已删除
您可以使用Curator,将其安排为cronjob或jenkins作业,并一起删除旧索引。
另请参阅:
Is there a way to Set ttl in elastic search index
gcxthw6b2#
让我们试试这个办法。
**首先,**创建一个策略来描述何时删除索引
PUT〈-您的策略名称
**接下来,**创建一个模板以选择使用此策略的索引类型。
在两天后删除
现在,当您创建一个新的索引示例时:test 001,它将在2天后自动删除。
**注意:**对于旧索引,它不会分配给新策略,因此除非您分配它,否则它不会被删除.
您可以使用此API将所有旧索引分配给策略
PUT http://localhost:9200/test */_settings〈--您的旧索引在这里,可以使用模式
然后在到期日期之后,所有旧索引都将被完全删除。