我可以看到文档说我们可以在文档上设置ttl
而不在索引/索引上设置ttl
。如果我们设置xcode-select --switch /applications/Xcode.app
pod setup
pod install
,也想知道它是否会对性能产生任何影响。
答案 0 :(得分:6)
_ttl
为enabled per index,但到期时每个文档都有效。
如果您希望索引到"过期",请删除它们。更加简单和高效。
是的,_ttl
会对性能产生影响。
Elasticsearch"方式"处理"已过期"数据是创建基于时间的指数。意思是,您可以为每天或每周创建索引。索引该索引中属于该日/周的所有内容。您可以决定要保留多少天并坚持使用该数字。
我们假设您要将数据保留7天。在第8天,像往常一样创建新索引,然后从8天前删除索引。你的集群7指数一直都有。 ttl
机制会检查过期文档的每indices.ttl.interval
(默认为60秒),它会从中创建批量请求并删除它们。这意味着不必要的请求将进入群集。
相反,删除索引非常简单快捷。
答案 1 :(得分:1)
_ttl
之类的方法现在已被弃用(由于反复重复对性能的影响)并且 Elastic 引入了 index lifecycle management (ILM)
因此,您现在想做的是每天动态创建索引,例如使用特定于日期的名称模式,例如my-app-log-yyyy-mm-dd
和 ILM 政策将处理超出所需时间范围的索引的删除
此外,Elastic 为您提供了用于管理此类策略的 API,即 POST 或 GET,因此您可以在您的应用程序中自动执行该操作,以避免手动工作并保持一切良好和一致。
索引本身通常很容易被记录器管理,例如 Logback
允许您在配置中以下列方式定义其名称时创建动态索引:
<index>my-app-logs-%date{yyyy-MM-dd}</index
答案 2 :(得分:-1)
ElasticSearch 6.1版本是否仍然支持TTL?文档没有提到它,但我很好奇,如果有人尝试过。我同意使用Curator并创建基于时间的索引是一种更好的方法。