我在下面有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 索引中更新。