filter{    
     grok{
         #只说一个match属性,他的作用是从message 字段中把时间给抠出来,并且赋值给另个一个字段logdate。
         #首先要说明的是,所有文本数据都是在Logstash的message字段中的,我们要在过滤器里操作的数据就是message。
         #第二点需要明白的是grok插件是一个十分耗费资源的插件,这也是为什么我只打算讲解一个TIMESTAMP_ISO8601正则表达式的原因。
         #第三点需要明白的是,grok有超级多的预装正则表达式,这里是没办法完全搞定的,也许你可以从这个大神的文章中找到你需要的表达式
         #
         #但是,我还是不建议使用它,因为他完全可以用别的插件代替,当然,对于时间这个属性来说,grok是非常便利的。
         match => ['message','%{TIMESTAMP_ISO8601:logdate}']
     }
 }filter{
     date{
         #还记得grok插件剥离出来的字段logdate吗?就是在这里使用的。你可以格式化为你需要的样子,至于是什么样子。就得你自己取看啦。
         #为什什么要格式化?
         #对于老数据来说这非常重要,因为你需要修改@timestamp字段的值,如果你不修改,你保存进ES的时间就是系统但前时间(+0时区)
         #但你格式化以后,就可以通过target属性来指定到@timestamp,这样你的数据的时间就会是准确的,这对以你以后图表的建设来说万分重要。
         #最后,logdate这个字段,已经没有任何价值了,所以我们顺手可以把这个字段从event对象中移除。
         match=>["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
         target=>"@timestamp"
         remove_field => 'logdate'
         #还需要强调的是,@timestamp字段的值,你是不可以随便修改的,最好就按照你数据的某一个时间点来使用,
         #如果是日志,就使用grok把时间抠出来,如果是数据库,就指定一个字段的值来格式化,比如说:"timeat", "%{TIMESTAMP_ISO8601:logdate}"
         #timeat就是我的数据库的一个关于时间的字段。
         #如果没有这个字段的话,千万不要试着去修改它。
     }
 }