Logstash - 将字符串中的字符拆分为 2 个字段
Logstash - Split characters in string into 2 fields
我在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})"]
}
}
我也发现很难找到关于这类事情的好例子,所以任何帮助将不胜感激!
您可以使用 ruby 过滤器并编写自定义 ruby 代码,例如:
filter {
ruby {
code => "
event['id_start'] = event['my_id'][0..6]
event['id_end'] = event['my_id'][6..8]
"
}
}
对于 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])
"
}
我在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})"]
}
}
我也发现很难找到关于这类事情的好例子,所以任何帮助将不胜感激!
您可以使用 ruby 过滤器并编写自定义 ruby 代码,例如:
filter {
ruby {
code => "
event['id_start'] = event['my_id'][0..6]
event['id_end'] = event['my_id'][6..8]
"
}
}
对于 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])
"
}