有没有办法在弹性搜索索引中设置ttl

时间:2015-09-22 13:59:33

标签: elasticsearch

我可以看到文档说我们可以在文档上设置ttl而不在索引/索引上设置ttl。如果我们设置xcode-select --switch /applications/Xcode.app pod setup pod install ,也想知道它是否会对性能产生任何影响。

3 个答案:

答案 0 :(得分:6)

_ttlenabled per index,但到期时每个文档都有效。

如果您希望索引到"过期",请删除它们。更加简单和高效。

是的,_ttl会对性能产生影响。 Elasticsearch"方式"处理"已过期"数据是创建基于时间的指数。意思是,您可以为每天或每周创建索引。索引该索引中属于该日/周的所有内容。您可以决定要保留多少天并坚持使用该数字。

我们假设您要将数据保留7天。在第8天,像往常一样创建新索引,然后从8天前删除索引。你的集群7指数一直都有。 ttl机制会检查过期文档的每indices.ttl.interval(默认为60秒),它会从中创建批量请求并删除它们。这意味着不必要的请求将进入群集。

相反,删除索引非常简单快捷。

查看this以及如何使用Curator轻松管理基于时间的索引。

答案 1 :(得分:1)

_ttl 之类的方法现在已被弃用(由于反复重复对性能的影响)并且 Elastic 引入了 index lifecycle management (ILM)

因此,您现在想做的是每天动态创建索引,例如使用特定于日期的名称模式,例如my-app-log-yyyy-mm-dd 和 ILM 政策将处理超出所需时间范围的索引的删除

此外,Elastic 为您提供了用于管理此类策略的 API,即 POSTGET,因此您可以在您的应用程序中自动执行该操作,以避免手动工作并保持一切良好和一致。

索引本身通常很容易被记录器管理,例如 Logback 允许您在配置中以下列方式定义其名称时创建动态索引:

 <index>my-app-logs-%date{yyyy-MM-dd}</index

答案 2 :(得分:-1)

ElasticSearch 6.1版本是否仍然支持TTL?文档没有提到它,但我很好奇,如果有人尝试过。我同意使用Curator并创建基于时间的索引是一种更好的方法。