如何将值设置为 logstash 中的空 xml 字段

How can I set a value to an empty xml field in logstash

我收到一些带有 logstash 的 xml 消息,我解析这些消息以获得相关信息

if ([message] =~ /^</) {
      xml {
        source => "message"
        store_xml => false
        xpath => [
          "name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",              
        ]
        target => "xml"
      }
      if ([MESSAGE_TYPE] == "") {
        mutate {
          update => { "MESSAGE_TYPE" => "EDITO" }
        }
      }
    }

我的目标是获取所有 MESSAGE_TYPE,如果为空,则将其设置为 EDITO。 现在我可以在 kibana 中看到带有 (MESSAGE_TYPE.raw:"") 的空消息,但我没有看到任何 EDITO MESSAGE_TYPE.

我有一些 MESSAGE_TYPE:文本、材料、照片但没有编辑(只有空消息)

所以总结起来,空字符串应该是EDITO

我已经阅读了一些文档 (https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace https://groups.google.com/forum/#!msg/logstash-users/mKJVO6yAmSc/on9mLRtLgTYJ),但仍然没有运气

至少我有:) 我必须安装一个 logstash 插件(更改:https://www.elastic.co/guide/en/logstash/current/plugins-filters-alter.html) 这里是 logstash conf

xml {
        add_field => { "genre" => "xml"}
        source => "message"
        store_xml => false
        xpath => [
          "/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
          "/APISTAT_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
          "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR","VECTORS",
          "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@NAME","VECTOR_NAME",
          "/APIOS_MOM_EVENT/INFO_EVENT/SENDER/text()","SENDER",
          "/APISTAT_EVENT/INFO_EVENT/SENDER/text()","SENDER",
          "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@ONLINE","ON_LINE",
          "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@OFFLINE","OFF_LINE",
          "name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
          "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/CODE_OFFRE_WEB/text()","OFFRE_WEB"
        ]
        target => "xml"
      }
      alter {
        condrewrite => [
          "MESSAGE_TYPE","","EDITO"
        ]
      }

现在我的 EDITO 信息正确了

此插件将成为 logstash 核心的一部分(此插件提供的功能可能会在未来版本中合并到 mutate 过滤器中。