是否可以通过logstash配置文件覆盖现有的elasticsearch索引

时间:2016-03-18 21:52:00

标签: elasticsearch indexing logstash overwrite

我有下面的logstash配置文件,用于索引数据库(在本例中只是一个csv文件)。每次我使用此配置调用logstash时,它都会添加到现有的elasticsearch索引中,从而产生重复项。我真的希望它覆盖现有的索引。我意识到我可以通过两个配置调用来执行此操作,其中一个使用action =>" delete"另一个是action =>" index",但似乎我应该能够一步完成。另外,如果我可以使用upsert,那么documentation就不清楚了。 (另外,请注意我使用stdin选项,这意味着一旦文档被编入索引就会退出logstash,它不会继续观察文档的更改)感谢您的帮助。

input {
     stdin {}
}
filter {
     csv { 
        columns => [a,b,c,d]
        separator=> ","
    }
}

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

1 个答案:

答案 0 :(得分:2)

如果您拥有(或可以计算)csv中的ID,您可以这样做:

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

然后,每次尝试索引相同的id时,都会在es索引中更新。