是否可以通过 logstash 配置文件覆盖现有的 elasticsearch 索引
Is it possible to overwrite exisiting elasticsearch index through logstash config file
我有下面的 logstash 配置文件,它用于索引数据库(在本例中只是一个 csv 文件)。每次我使用此配置调用 logstash 时,它都会添加到现有的 elasticsearch 索引中,从而产生重复项。我真的希望它覆盖现有的索引。我意识到我可能可以通过两个配置调用来完成此操作,一个是 action=>"delete",另一个是 action=>"index",但似乎我应该能够一步完成。此外,documentation 还不清楚我是否可以为此使用更新插入。 (另外,请注意我使用的是 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 索引中更新。
我有下面的 logstash 配置文件,它用于索引数据库(在本例中只是一个 csv 文件)。每次我使用此配置调用 logstash 时,它都会添加到现有的 elasticsearch 索引中,从而产生重复项。我真的希望它覆盖现有的索引。我意识到我可能可以通过两个配置调用来完成此操作,一个是 action=>"delete",另一个是 action=>"index",但似乎我应该能够一步完成。此外,documentation 还不清楚我是否可以为此使用更新插入。 (另外,请注意我使用的是 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 索引中更新。