数组用于XML输入Logstash时的条件性拆分

时间:2018-06-08 00:03:16

标签: 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]"
  }

我得到错误,因为Split只能在字符串或数组中完成。 我怎样才能将字符串变为数组,还是有另一种解决方法?

预期产出:

{
 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,
 }
}

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

0 个答案:

没有答案