1
我將日誌文件傳遞到logstash中,然後再推送到elasticsearch。logstash - 刪除字段中的所有非數字字符
一,我有字段有時會出現一系列的數字
foobar = 42
有時帶有前綴字母
foobar = ws-42
我要確保現場始終是一個整數,並且如果存在任何非數字,則將其刪除。
這裏是logstash配置的一部分,這使得確保該字段是一個整數,如果存在
filter {
mutate {
convert => [ "foobar", "integer"]
}
}
我怎樣才能去除出字符?
更新
通過使用發生變異濾波器我可以剝離非數值,或我可以轉換爲整數。但是,如果我嘗試做兩個,則返回0。
例
input {
stdin {}
}
filter {
kv { }
mutate {
gsub => [ "foobar", "\D", "" ]
convert => [ "foobar", "integer" ]
}
}
這裏是輸出。請注意,如果提供了「42」,然後foobar的返回42的整數,但是如果你提供「SW-42」 foobar的返回0
foobar="42"
{
"message" => "foobar=\"42\"",
"@version" => "1",
"@timestamp" => "2015-03-31T22:32:11.718Z",
"host" => "swat-logstash02",
"foobar" => 42
}
foobar="sw-42"
{
"message" => "foobar=\"sw-42\"",
"@version" => "1",
"@timestamp" => "2015-03-31T22:32:23.822Z",
"host" => "swat-logstash02",
"foobar" => 0
}