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.ddlogstash-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的交互!