目前,我正在logstash配置文件中执行以下操作:

filter {
    ...
    mutate {
        ...
        convert => {
            "blahId" => "integer"
            "blahblahId" => "integer"
            ...
            ...
            "b...blahId" => "integer"
        }
        ...
    }
    ...
}

因此,基本上我想将所有以“Id”结尾的字段都转换为整数类型。有一种方法可以做到这一点吗?像"*Id" => "integer"这样的东西呢?

编辑:我尝试过
convert => {
    "*Id" => "integer"
}

如我所料,没有用。

也许使用 ruby 过滤器?

最佳答案

没有具体的答案,但这就是我最终要做的事情:

ruby {
        code => "
            fieldArray = event['kvmess'].split('|');
            for field in fieldArray
                name = field.split('=')[0];
                value = field.split('=')[1];
                if value =~ /\A\d+\Z/
                    event[name] = value.to_i
                else
                    event[name] = value
                end
            end
        "
    }

我的kvmess就像“blahId = 123 | blahblahId = 456 | some = thing | b..blahId = 789”。
因此,这会将所有具有数字值的键转换为整数类型。

有一个插件-kv专​​门用于此功能,但是它没有将数据类型更改为int的功能,因此我最终使用了这个ruby插件。

10-07 15:26