首页 > 解决方案 > 用于 XML 输入 Logstash 的数组时的条件拆分

问题描述

我正在尝试解析 XML 文件并想要拆分。但拆分字段并不总是数组。XML结构:

<A a="1">
  <B b="1" q="10">
    <C c="1" r="20"></C>
  </B>
  <B b="2" q="11">
    <C c="2" r="21"></C>
    <C c="3" r="22">
      <M m="1" />
    </C>
  <B>
</A>

当我尝试拆分为

  xml {
    source => "message"
    target => "doc"
    force_array => false
  }      
  split {
    field => "doc[B][C]"
  }

我收到错误,因为拆分只能在字符串或数组中完成。如何将字符串变异为数组,或者有其他方法可以解决这个问题吗?

预期输出:

{
 C => {
   c => 1,
   r => 20,
 }
 B => {
   b => 1,
   q => 10,
 }
}
{
 C => {
   c => 2,
   r => 20,
 }
 B => {
   b => 2,
   q => 11,
 }
}
{
 C => {
   c => 3,
   r => 22,
   M => {
     m => 1
   }
 }
 B => {
   b => 2,
   q => 11,
 }
}

每个嵌套都充当一个单独的事件,并在弹性搜索中存储为不同的事件(行)。

标签: logstash

解决方案


推荐阅读