2015-11-03 48 views

回答

0

可以使用Ruby插件做转换。下面是示例配置

input { 
     stdin { 
     } 
} 

filter { 
     ruby { 
       code => " 
         # yyyy-MM-dd HH:mm:ss 
         event['parseTime'] = Time.parse(event['message']).to_i 

       " 
     } 
} 
output { 
    stdout{codec => "rubydebug"} 
} 

样品输入:

2015-11-03 15:00:11 

样本输出:

{ 
     "message" => "2015-11-03 15:00:11", 
     "@version" => "1", 
    "@timestamp" => "2015-11-03T08:31:27.419Z", 
      "host" => "BEN_LIM", 
    "parseTime" => 1446534011 
} 

parseTime字段是时间戳格式。

+1

最后,如果你的时间需要精确微秒,在红宝石插件,你应该使用(Time.parse(事件[ '消息'])。to_f).floor,感谢@Ben林anwser, –

1

日期{}滤波器使用两个参数:包含日期字符串字段,另一个指定格式字符串。默认输出是覆盖@timestamp字段,这是elasticsearch(和kibana)使用的默认文档日期。

通过将其转换为日期,你做的所有魔法elasticsearch日期型的东西与它(就像它比较“现在”,等等)。