【发布时间】:2020-06-13 06:34:02
【问题描述】:
我正在使用 logstash 将数据传递给 elasticsearch,我想知道如何删除所有文档。
我这样做是为了删除那些带有id的,但我现在需要的是删除所有匹配固定值的文档,例如Fixedfield =“Base1”,无论jdbc输入中获得的id是否存在或不是。
这个想法是删除所有 elasticsearch fixedField = "Base1" 存在的文档,并插入我从 jdbc 输入中获得的新文档,这样我可以避免留下不再存在于我的源(jdbc 输入)中的文档。 一个更完整的例子
我的document_id形成:001、002、003等
我的固定字段由三个document_id的“Base1”组成
有什么想法吗?
input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://xxxxx;databaseName=xxxx;"
statement => "Select * from public.test"
}
}
filter {
if [is_deleted] {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "delete"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
} else {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "index"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
}
}
output {
elasticsearch {
hosts => "xxxxx"
user => "xxxxx"
password => "xxxxx"
index => "xxxxx"
document_type => "_doc"
document_id => "%{id}"
}
stdout { codec => rubydebug }
}
【问题讨论】: