簡體   English   中英

elasticsearch使用logstash和csv刪除文檔

[英]elasticsearch delete documents using logstash and csv

有什么方法可以使用Logstash和csv文件從ElasticSearch中刪除文檔? 我閱讀了Logstash文檔,卻一無所獲,並嘗試了一些配置,但是使用操作“刪除”卻沒有任何反應

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

有人嘗試過嗎? 我應該在配置的輸入和過濾器部分添加一些特殊的東西嗎? 我使用文件插件作為輸入,使用csv插件作為過濾器。

絕對可以按照您的建議去做,但是如果您使用的是Logstash 1.5,則需要使用transport協議,因為通過HTTP協議執行delete時Logstash 1.5中存在一個錯誤(請參見問題#195 )。

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

id
12345
12346
12347

您的delete.conf Logstash配置如下所示:

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您將能夠刪除ID在CSV文件中指定的所有文檔。

除了Val的答案外,我還要補充一點:如果您有一個包含刪除行和升序行混合輸入的單個輸入,那么如果您有一個標識要刪除的行的標志,則可以同時執行這兩個操作。 output > elasticsearch > action參數可以是“字段引用”,這意味着您可以引用每行字段。 更好的是,您可以將該字段更改為元數據字段,這樣它就可以在字段引用中使用而無需編制索引。

例如,在您的filter部分中:

filter {
    # [deleted] is the name of your field
    if [deleted] {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "delete"
            }
        }
        mutate {
            remove_field => [ "deleted" ]
        }
    } else {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "index"
            }
        }
        mutate {
            remove_field => [ "deleted" ]
        }
    }   
}

然后,在輸出部分中,引用元數據字段:

output {
    elasticsearch {
        hosts => "localhost:9200"
        index => "myindex"
        action => "%{[@metadata][elasticsearch_action]}"
        document_type => "mytype"
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM