elasticsearch 使用Logstash动态解析
我试图使用logstash解析动态文本,但遇到了以下问题: 例如,请看以下文本: 编号1 如果我只有一个数字,我可以很容易地把它放入一个变量中 解析过程如下所示:elasticsearch 使用Logstash动态解析,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok,我试图使用logstash解析动态文本,但遇到了以下问题: 例如,请看以下文本: 编号1 如果我只有一个数字,我可以很容易地把它放入一个变量中 解析过程如下所示: grok { match => [ "message", "number(s) %{NUMBER:NumberValue}" ] } 但是如何将多个数字动态解析为同一个变量(作为整数列表)?例如: 编号1 2 3 我认为单靠grok过滤器是做不到的。最简单的方法可能是将所有整数提取到一个空格分隔的字符串中,用拆分,然后使
grok {
match => [ "message", "number(s) %{NUMBER:NumberValue}" ]
}
但是如何将多个数字动态解析为同一个变量(作为整数列表)?例如:
编号1 2 3
我认为单靠grok过滤器是做不到的。最简单的方法可能是将所有整数提取到一个空格分隔的字符串中,用拆分,然后使用将字符串中的每个元素转换为整数
filter {
grok {
match => ["message", "number\(s\) (?<numbers>\d+(?: \d+)*)"]
}
mutate {
split => {
"numbers" => " "
}
}
ruby {
code => "
event['numbers'] = event['numbers'].collect { |i| i.to_i }
"
}
}
过滤器{
格罗克{
匹配=>[“消息”,“数字\(s\)(?\d+(?:\d+*)”]
}
变异{
拆分=>{
“数字”=>“”
}
}
红宝石{
代码=>”
事件['numbers']=事件['numbers'].收集{i | i.to_i}
"
}
}
要捕获整数列表,[1,2,3]
还是字符串“1,2,3”
?