是否有可能通过 logstash 配置文件覆盖现有的弹性搜索索引



我在下面有logstash配置文件,用于索引数据库(在这种情况下只是一个csv文件)。 每次我用这种配置调用 logstash 时,它都会添加到现有的 elasticsearch 索引中,从而产生重复项。 我真的希望它覆盖现有索引。 我意识到我可能可以通过两个配置调用来做到这一点,一个使用 action=>"delete",另一个使用 action=>"index",但似乎我应该能够在一个步骤中做到这一点。 另外,从文档中不清楚我是否可以为此使用 upsert。(另外,请注意,我使用的是 stdin 选项,这意味着一旦文档被索引,logstash 就会退出,它不会继续监视文档的更改)感谢您的任何帮助。

input {
     stdin {}
}
filter {
     csv { 
        columns => [a,b,c,d]
        separator=> ","
    }
}
output {
    elasticsearch {
        hosts => ["localhost:9200"] 
        index => "database.csv"
    }
}

如果你有(或可以计算)你的csv中的一个id,你可以这样做:

output {
    elasticsearch {
        hosts => ["localhost:9200"] 
        index => "database.csv"
        document_id => "%{yourComputedId}"
    }
}

然后,每次尝试为同一 id 编制索引时,它都会在 es 索引中更新。

最新更新