首页 > 解决方案 > 发生 Ruby 异常:在 Logstash ruby​​ 过滤器中没有将 String 隐式转换为 Integer

问题描述

我收到 Logstash 错误:

[2018-10-10T17:24:11,048][ERROR][logstash.filters.ruby    ] Ruby exception occurred: no implicit conversion of String into Integer
[2018-10-10T17:24:11,049][ERROR][logstash.filters.ruby    ] Ruby exception occurred: no implicit conversion of String into Integer
[2018-10-10T17:24:11,047][ERROR][logstash.filters.ruby    ] Ruby exception occurred: no implicit conversion of String into Integer

我的输入:

"files": [{
        "SHA256": "1213447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF",
        "MD5": "7D332F11DD7389C8121AA523F07CFEEC",
        "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5"
    }, {
        "SHA256": "1213447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF",
        "MD5": "7D332F11DD7389C8121AA523F07CFEEC",
        "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5"
    }, {
        "SHA256": "1212447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF",
        "MD5": "7D332F11DD7389C8121AA523F07CFEEC",
        "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5"
    }
]

我的代码:

a = event.get("files"); event.set("files_md5", a.map { |e| e["MD5"]

该代码正在将上面的输入转换为:

"files":["7D332F11DD7389C8121AA523F07CFEEC","7D332F11DD7389C8121AA523F07CFEEC","7D332F11DD7389C8121AA523F07CFEEC"]

由于这些错误,没有数据被丢弃,但是,我不想拥有它们。我努力了:

a = event.get("files"); event.set("files_md5", a.map { |e| e["MD5"].to_i 

在这种情况下,有没有办法正确地进行隐式转换?非常感谢帮助。

标签: rubylogstash

解决方案


推荐阅读