使用logstash以弹性方式更新多个记录

时间:2017-06-16 15:23:26

标签: elasticsearch logstash logstash-configuration

嗨,我有问题,使用logstash更新弹性多个记录。 我的logstash配置如下:

output {
    elasticsearch {
        hosts => "******"
        user => "xxxxx"
        password => "yyyyyy"
        index => "index_name" 
        document_type => "doc_type"
        action => "update"          
        script_lang => "painless"
        script_type => "inline"
        document_id => "%{Id}"
        script => 'ctx._source.Tags = params.event.get("Tags");'
    }

}

我对logstash转储文件夹的输出如下所示: {"index_name":"feed_name","doc_type":"doc_type","Id":["b504d808-f82d-4eaa-b192-446ec0ba487f", "1bcbc54f-fa7a-4079-90e7-71da527f56a5"],"es_action":"update","Tags": ["tag1","tag2"]}

我最大的问题是我无法一次更新这两个recods,但我需要创建两个记录,每个记录具有不同的ID。

有没有什么可以通过在我的输出配置中编写查询来解决这个问题? 在sql看起来像这样:

Update Table 
SET Tags
WHERE ID in (guid1, guid2)

我知道在这种情况下我可以在logstash中添加两个记录并解决问题但我需要解决第二个问题,我需要替换所有有一个tag1的记录并给它newTag。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用split filter来克隆事件中每个 id 的事件?过滤器似乎可以帮到你。