unit_count_pattern编辑

此设置仅与 age 过滤器类型一起使用,用于定义是从配置中获取 unit_count 值,还是通过正则表达式从索引名称中读取。

 - filtertype: age
   source: creation_date
   direction: older
   unit: days
   unit_count: 3
   unit_count_pattern: -([0-9]+)-

当评估索引年龄所依据的值不是静态值,而是每个索引都不同时,可以使用此设置。在这种情况下,可以选择通过此参数中定义的正则表达式从索引名称中提取特定于索引的值。

例如,考虑以下在其名称中包含保留时间的索引名称模式:_logstash-30-yyyy.mm.dd_、_logstash-12-yyyy.mm_、__3_logstash-yyyy.mm.dd_。

为了从索引名称中提取值,此设置将被编译为正则表达式并与索引名称进行匹配,如果匹配成功,则将正则表达式中第一个捕获组的值用作 unit_count 的值。

如果在编译或匹配表达式期间出现任何错误,或者表达式不包含捕获组,则在 unit_count 中配置的值将用作回退值,除非它被设置为 *-1*,在这种情况下,索引将被跳过。

这里不解释正则表达式和匹配组,因为它们是一个相当庞大和复杂的主题,但是网上有很多资源可以提供帮助。使用在线工具测试正则表达式,例如 regex101.com,将在开发模式时提供很大帮助。

示例

  • **logstash-30-yyyy.mm.dd**:每日索引,应在 30 天后删除,与模式不匹配的索引将在 365 天后删除
 - filtertype: age
   source: creation_date
   direction: older
   unit: days
   unit_count: 365
   unit_count_pattern: -([0-9]+)-
  • **logstash-12-yyyy.mm**:每月索引,应在 12 个月后删除,与模式不匹配的索引将在 3 个月后删除
 - filtertype: age
   source: creation_date
   direction: older
   unit: months
   unit_count: 3
   unit_count_pattern: -([0-9]+)-
  • ***3*logstash-yyyy.mm.dd**:每日索引,应在 3 年后删除,与模式不匹配的索引将被忽略
 - filtertype: age
   source: creation_date
   direction: older
   unit: years
   unit_count: -1
   unit_count_pattern: ^_([0-9]+)_

请务必注意此参数与 unit_count 之间的交互!