【发布时间】:2020-12-01 01:42:34
【问题描述】:
我是 fluentd 的新手,并使用它来将数据摄取到 elasticsearch。我有一个名为 request_time 的字段,其值为:110820120501 作为格式 [ddmmyyHHMMSS] 的数字。如何将其转换为日期字段。
这是我写的,但它不起作用。任何帮助表示赞赏。
request_time 值示例:100820015642
<filter>
@type record_transformer
enable_ruby true
<record>
request_time ${ require 'date'; DateTime.strptime('request_time', '%d%m%y%H%M%S')}
</record>
</filter>
我也尝试过以下方法:
<filter>
@type record_transformer
enable_ruby true
<record>
time ${require 'date'; DateTime.parse('request_time').strftime('%d%m%y%H%M%S')}
</record>
</filter>
如何将 request_time 存储为转换为值的日期字段,例如。 "request_time": "2020-08-11T11:24:23.000+0100" ?
【问题讨论】:
-
“不起作用”是什么意思?解析示例请求时间值会产生预期的结果。
-
当我使用第一个代码 sn-p 运行 td-agent 时出现此错误。 ``` fluent/log.rb:306:debug: map:{"%Q[request_time]"=>" require 'date'; DateTime.strptime('request_time', '%d%m%y%H%M %S')"} ``` 并给出值为:“request_time”=>“100820022014”}。但我正在寻找类似的输出:“2020-08-10T02:20:14.000+0100”
-
使用以下方法让它工作:``` time "${require 'date'; DateTime.strptime(record['request_time'],'%d%m%y%H%M% S')}" ```
标签: ruby elasticsearch fluentd td-agent