在Logstash过滤器中将字段评估为表达式

时间:2016-11-11 14:03:48

标签: logstash

我在Logstash事件中有一个自定义字段定义为表达式:

{ "customIndex" => "my-service-%{+YYYY.MM}" }

用于计算elasticsearch输出插件的索引名称的过滤器:

filter {
  if [customIndex] {
    mutate {
      add_field => { "indexName" => "custom-%{customIndex}" }
    } 
  } else {
    mutate {
      add_field => { "indexName" => "common-%{+YYYY.MM.dd}" }
    }
  }
}

但是对于自定义索引,它会创建无效名称custom-my-service-%{+YYYY.MM},并且不会评估%{+YYYY.MM}表达式。

是否可以评估字段并获取custom-my-service-2016.11

1 个答案:

答案 0 :(得分:1)

如果您可以将创建的字段重新格式化为:

{ "customIndex" => "my-service-%Y.%m" }

然后这个Ruby过滤器将起到作用:

ruby {
    init => "require 'date'"
    code => "event['indexName'] = 'custom-' + Date.today.strftime(event['customIndex'])"
}

Here是关于您可以使用的占位符的文档。