我如何根据 2 个标记之一将消息拆分为 2 个属性?
how do i split message into 2 properties based on one of 2 tokens?
我认为这是一个简单的案例,但我在实施它时遇到了问题。
我的输入消息的格式是:aaaaaaaaa;bbbbbbbbbb
或 aaaaaaa:bbbbbbb
我想做的是拆分冒号或分号,然后将它们分配给键和值对。
我正在做 2 次变异,但是当我 运行 一些样本测试时它出错了。
mutate{
split => {
"message" => ":"
}
add_field => {
"key" => "%{[message][0]}"
"value" => "%{[message][1]}"
}
}
mutate{
split => {
"message" => ";"
}
add_field => {
"key" => "%{[message][0]}"
"value" => "%{[message][1]}"
}
}
但我认为那是不对的。然后我更多地研究了 grok,但不确定它是否是这样工作的。
我应该改为:
filter {
grok {
match => { "message" => "%{key}:%{value}" }
}
grok {
match => { "message" => "%{key};%{value}" }
}
}
我会使用 grok 来做到这一点。试试这个:
grok { match => { "message" => "%{DATA:field1}[:;]%{GREEDYDATA:field2}" } }
我认为这是一个简单的案例,但我在实施它时遇到了问题。
我的输入消息的格式是:aaaaaaaaa;bbbbbbbbbb
或 aaaaaaa:bbbbbbb
我想做的是拆分冒号或分号,然后将它们分配给键和值对。
我正在做 2 次变异,但是当我 运行 一些样本测试时它出错了。
mutate{
split => {
"message" => ":"
}
add_field => {
"key" => "%{[message][0]}"
"value" => "%{[message][1]}"
}
}
mutate{
split => {
"message" => ";"
}
add_field => {
"key" => "%{[message][0]}"
"value" => "%{[message][1]}"
}
}
但我认为那是不对的。然后我更多地研究了 grok,但不确定它是否是这样工作的。
我应该改为:
filter {
grok {
match => { "message" => "%{key}:%{value}" }
}
grok {
match => { "message" => "%{key};%{value}" }
}
}
我会使用 grok 来做到这一点。试试这个:
grok { match => { "message" => "%{DATA:field1}[:;]%{GREEDYDATA:field2}" } }