Logstash使用array作为属性创建elasticsearch文档,并将新元素放入数组

时间:2018-02-12 17:31:25

标签: elasticsearch logstash logstash-configuration

我有一个内部有一些孩子的文件,例如:

parent : {
  "id" : 1,
  "name" : "test",
  "children" : [
     { "idchild" : 1, "name" : "c1"},
     {...}
  ]
}

我想将这些孩子添加到已存在的父母身上。

我有一个logstash文件来读取所有父母。它在elasticsearch中编写文档并创建一个空数组:

input {
    jdbc {
       jdbc_connection_string => "jdbc:postgresql://localhost:5432/test"
       ...    
    }
}

filter { ruby { code => "event.set('children',[]);" } }

output {
    elasticsearch {
        index => "test"
        user => "elastic"
        password => "elastic"
        document_type => "parent"
        document_id => "%{id}"
        hosts => "localhost:9200"
   }
}

工作正常,文件符合预期。

在第二步中,我阅读了孩子,按父母ID匹配文件,并与孩子一起更新......

filter {
    mutate {
      add_field => { 
        "[children][child][idchild]" => "%{id}"
        "[children][child][name]" => "%{name}"
      }
   }
}

但阵列儿童成为财产和对象"孩子"每次更新而不是新插入。

我怎样才能让新生儿入住儿童?有一种方法可以将idchild声明为子文档的id吗?

0 个答案:

没有答案