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

Dhy*_*yan 3 elasticsearch

我可以看到文档说我们可以设置ttl文档而不是索引/索引.如果我们设置,也想知道它是否有任何性能影响ttl.

And*_*fan 6

_ttl每个索引启用,但每个文档过期的作品.

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

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

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

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

看看这个以及如何使用Curator轻松管理基于时间的索引.


pov*_*nko 6

_ttl类似的方法现已弃用(因为一遍又一遍地重复会影响性能),并且 Elastic 引入了索引生命周期管理 (ILM)

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

除此之外,Elastic 还为您提供了用于管理此类策略(即POSTGET)的 API ,因此您可以在应用程序中实现自动化,以避免手动工作并保持一切良好和一致。

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

 <index>my-app-logs-%date{yyyy-MM-dd}</index
Run Code Online (Sandbox Code Playgroud)