一尘不染

elasticsearch使用logstash和csv删除文档

elasticsearch

有什么方法可以使用Logstash和csv文件从ElasticSearch删除文档?我阅读了Logstash文档,却一无所获,并尝试了一些配置,但是使用操作“删除”却没有任何反应

output {
    elasticsearch{
        action => "delete"
        host => "localhost"
        index => "index_name"
        document_id => "%{id}"
    }
}

有人尝试过吗?我应该在配置的输入和过滤器部分添加一些特殊的东西吗?我使用文件插件作为输入,使用csv插件作为过滤器。


阅读 247

收藏
2020-06-22

共1个答案

一尘不染

绝对可以按照您的建议去做,但是如果您使用的是Logstash
1.5,则需要使用该transport协议,因为delete通过HTTP协议进行操作时Logstash
1.5中存在一个错误(请参见问题#195)。

因此,如果您的delete.csvCSV文件格式如下:

id
12345
12346
12347

您的delete.confLogstash配置如下所示:

input {
    file {
        path => "/path/to/your/delete.csv"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}
filter {
    csv {
        columns => ["id"]
    }
}
output {
    elasticsearch{
        action => "delete"
        host => "localhost"
        port => 9300                         <--- make sure you have this
        protocol => "transport"              <--- make sure you have this
        index => "your_index"                <--- replace this
        document_type => "your_doc_type"     <--- replace this
        document_id => "%{id}"
    }
}

然后,在运行时,bin/logstash -f delete.conf您将能够删除其CSV文件中指定了ID的所有文档。

2020-06-22