elasticsearch Logstash-在mutate中查找分割结果的长度
我是Logstash的新手。目前我正在尝试以CSV格式解析日志。我需要用空格分隔符拆分字段,然后根据拆分结果添加新字段 以下是我需要创建的过滤器:elasticsearch Logstash-在mutate中查找分割结果的长度,elasticsearch,logstash,logstash-configuration,elasticsearch,Logstash,Logstash Configuration,我是Logstash的新手。目前我正在尝试以CSV格式解析日志。我需要用空格分隔符拆分字段,然后根据拆分结果添加新字段 以下是我需要创建的过滤器: filter { ... mutate { split => ["user", " "] if [user.length] == 2 { add_field => { "sourceUsername" => "%{user[0]}" } add_field => { "sourc
filter {
...
mutate {
split => ["user", " "]
if [user.length] == 2 {
add_field => { "sourceUsername" => "%{user[0]}" }
add_field => { "sourceAddress" => "%{user[1]}" }
}
else if [user.length] == 1 {
add_field => { "sourceAddress" => "%{user[0]}" }
}
}
...
}
我在if
脚本之后出错。
请注意,有没有办法在mutate插件中捕获分割结果的长度
谢谢,
Heri根据您的代码示例,我假设您已经完成了csv解析,并且您已经有一个字段
user
,该字段的值包含sourceAddress
或包含sourceUsername sourceAddress
的值(由空格分隔)
现在,有一个可用于检索更多字段的。您不需要使用mutate过滤器来分割字段。在这种情况下,一种更灵活的方法是
过滤器:
grok {
match => {
"user" => [
"%{WORD:sourceUsername} %{IP:sourceAddress}",
"%{WORD:sourceUsername}"
]
}
}
字段“user”=>“192.168.0.99”将导致
“sourceAddress”=>“191.168.0.99”
字段“user”=>“Herry 192.168.0.99”将导致
“sourceUsername”=>“Herry”,“sourceAddress”=>“191.168.0.99”
当然,如果您的源地址不是IP,您可以将IP
更改为WORD