我可以看到文档说我们可以在文档上设置ttl,但不能在索引上设置ttl。我还想知道如果我们设置ttl是否会对性能产生任何影响。
ttl
bogh5gae1#
_ttl是针对每个索引启用的,但过期对每个文档有效。如果你想让你的索引“过期”,删除它们。更简单,性能更好。是的,_ttl对性能有影响。Elasticsearch处理“过期”数据的“方式”是创建基于时间的索引。也就是说,为每一天或每一周创建一个索引。在该索引中索引属于那一天/那一周的所有内容。您可以决定保留多少天,并坚持使用该数字。假设您要将数据保留7天。在第8天,您照常创建新索引,然后删除8天前的索引。您将在集群中拥有7个索引。ttl机制每隔indices.ttl.interval检查一次(默认情况下为60秒),它将从这些文档中创建批量请求并删除它们。这意味着不必要的请求将进入群集。相反,删除索引非常简单快捷。了解this以及如何使用Curator轻松管理基于时间的索引。
_ttl
indices.ttl.interval
63lcw9qa2#
类似于_ttl的方法现在已弃用(反复迭代会影响性能),Elastic引入了index lifecycle management (ILM)因此,您现在要做的是每天动态创建索引,例如使用特定于日期的名称模式(如my-app-log-yyyy-mm-dd)和ILM策略来处理超出所需时间范围的索引删除此外,Elastic还为您提供了用于管理此类策略(即POST或GET)的API,因此您可以在应用程序中自动执行这些操作,以避免手动操作,并保持所有操作的良好和一致性。索引本身通常很容易由记录器管理,例如Logback允许您在配置中以以下方式定义其名称时创建动态索引:
my-app-log-yyyy-mm-dd
Logback
<index>my-app-logs-%date{yyyy-MM-dd}</index
ui7jx7zq3#
尝试这种方式,我用这个来删除我的到期索引。
**首先,**创建一个策略来描述何时删除索引
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 } } }
然后在到期日期之后,所有旧索引都将被完全删除。
3条答案
按热度按时间bogh5gae1#
_ttl
是针对每个索引启用的,但过期对每个文档有效。如果你想让你的索引“过期”,删除它们。更简单,性能更好。
是的,
_ttl
对性能有影响。Elasticsearch处理“过期”数据的“方式”是创建基于时间的索引。也就是说,为每一天或每一周创建一个索引。在该索引中索引属于那一天/那一周的所有内容。您可以决定保留多少天,并坚持使用该数字。假设您要将数据保留7天。在第8天,您照常创建新索引,然后删除8天前的索引。您将在集群中拥有7个索引。
ttl
机制每隔indices.ttl.interval
检查一次(默认情况下为60秒),它将从这些文档中创建批量请求并删除它们。这意味着不必要的请求将进入群集。相反,删除索引非常简单快捷。
了解this以及如何使用Curator轻松管理基于时间的索引。
63lcw9qa2#
类似于
_ttl
的方法现在已弃用(反复迭代会影响性能),Elastic引入了index lifecycle management (ILM)因此,您现在要做的是每天动态创建索引,例如使用特定于日期的名称模式(如
my-app-log-yyyy-mm-dd
)和ILM策略来处理超出所需时间范围的索引删除此外,Elastic还为您提供了用于管理此类策略(即POST或GET)的API,因此您可以在应用程序中自动执行这些操作,以避免手动操作,并保持所有操作的良好和一致性。
索引本身通常很容易由记录器管理,例如
Logback
允许您在配置中以以下方式定义其名称时创建动态索引:ui7jx7zq3#
尝试这种方式,我用这个来删除我的到期索引。
**首先,**创建一个策略来描述何时删除索引
PUT〈-您的策略名称
**接下来,**创建一个模板以选择使用此策略的索引类型。
在两天后删除
现在,当您创建一个新的索引示例时:test 001,它将在2天后自动删除。
**注意:**对于旧索引,它不会分配给新策略,因此除非您分配它,否则它不会被删除.
您可以使用此API将所有旧索引分配给策略
PUT http://localhost:9200/test */_settings〈--您的旧索引在这里,可以使用模式
然后在到期日期之后,所有旧索引都将被完全删除。