我有一个CSV文件中的Logstash读取,其中包含一个字段my_id
,是一个由数字组成的8位数字符串。
我希望输出文件有2个字段代替my_id
。一个名为id_start
的名称为前6位,id_end
为最后2位数。
示例:my_id:12345678
将成为id_start:123456
和id_end:78
我对Logstash很新,但我一直在阅读,我认为我需要使用grok
过滤器来做到这一点 - 到目前为止我创建第一个字段的尝试没有用:
filter {
grok {
match => ["id_start", "(?<my_id>.{6})"]
}
}
我也发现很难在这类事情上找到好的例子,所以任何帮助都会受到赞赏!
答案 0 :(得分:1)
您可以使用ruby过滤器并编写自定义ruby代码,例如:
filter {
ruby {
code => "
event['id_start'] = event['my_id'][0..6]
event['id_end'] = event['my_id'][6..8]
"
}
}
答案 1 :(得分:0)
这与Logstash 5.x +不同,它们实现了getter和setter以及对变量的限制访问。
ruby {
code => "
event.set('[id_start]', event.get('[my_id]')[0..6])
event.set('[id_end]', event.get('[my_id]')[6..8])
"
}