logstash:can';不能更改日期字段,但可以更改其他类型

logstash:can';不能更改日期字段,但可以更改其他类型,logstash,Logstash,我想把2016年改为2015年,但logstash不想改变。我试着改变一个非日期字段,结果它成功了。。。为什么?如果您运行的是logstash 2,它们只是修复了,因此您可能会更新日期过滤器 如果您仍然想自己做,为什么不在调用date{}之前将其添加到syslog_timestamp(字符串)中呢?您还需要修改您的模式 date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] targe

我想把2016年改为2015年,但logstash不想改变。我试着改变一个非日期字段,结果它成功了。。。为什么?

如果您运行的是logstash 2,它们只是修复了,因此您可能会更新日期过滤器

如果您仍然想自己做,为什么不在调用date{}之前将其添加到syslog_timestamp(字符串)中呢?您还需要修改您的模式

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"
    ]
}

我找到的唯一解决方案是,通过添加前导空格,强制logstash将
eeee
视为字符串,而不是不可变的日期。

快速浏览配置,“ttt”应该是日期类型,“eee”应该是字符串,gsub应该可以工作。你从产出中得到了什么类型和值?你的意思是,如果上一年的月份还没有过去,他们会把上一年的数据加在一起?如果这就是你的意思,我刚刚安装了Logstash2.1.1,如果我没有设置年份,它仍然会显示“2016年12月”之类的内容。
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"]
}