logstash :不能改变日期字段,但可以改变其他类型
logstash : can't mutate a date field, but can mutate other types
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
target => "ttt"
}
mutate {
add_field => { "eee" => "%{ttt}"}
}
mutate {
gsub => [
"eee", "2016", "2015"
]
}
我想在我的领域中将 2016 年更改为 2015 年 eee
但 logstash 不想更改它。我试图改变一个非日期字段并且它有效...为什么?
如果您是 运行 logstash 2,他们刚刚修复了 this bug,因此您可以更新日期过滤器。
如果您仍然想自己做,为什么不在调用 date{} 之前将其添加到 syslog_timestamp(字符串)?你也需要修改你的模式。
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
target => "aaaa"
}
mutate {
add_field => { "eeee" => " %{aaaa}" }
}
mutate {
gsub => [ "eeee", "2016", "2015" ]
}
mutate {
strip => ["eeee"]
}
我找到的唯一解决方案是通过添加前导空格强制 logstash 将 eeee
视为字符串而不是不可变日期。
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
target => "ttt"
}
mutate {
add_field => { "eee" => "%{ttt}"}
}
mutate {
gsub => [
"eee", "2016", "2015"
]
}
我想在我的领域中将 2016 年更改为 2015 年 eee
但 logstash 不想更改它。我试图改变一个非日期字段并且它有效...为什么?
如果您是 运行 logstash 2,他们刚刚修复了 this bug,因此您可以更新日期过滤器。
如果您仍然想自己做,为什么不在调用 date{} 之前将其添加到 syslog_timestamp(字符串)?你也需要修改你的模式。
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
target => "aaaa"
}
mutate {
add_field => { "eeee" => " %{aaaa}" }
}
mutate {
gsub => [ "eeee", "2016", "2015" ]
}
mutate {
strip => ["eeee"]
}
我找到的唯一解决方案是通过添加前导空格强制 logstash 将 eeee
视为字符串而不是不可变日期。