我有一个弹性搜索数据库,如果输入语句中不存在,我想删除所有的文档吗?
你能帮帮我吗,
提前谢谢
input {
jdbc {
jdbc_validate_connection => true
jdbc_connection_string => "jdbc:postgresql://xxxx:xxxx/xxxx"
jdbc_user => "xxxx"
jdbc_password => "xxxx"
jdbc_driver_library => "/usr/share/logstash/Drivers/postgres/postgresql-9.4.1212.jar"
jdbc_driver_class => "org.postgresql.Driver"
statement => "SELECT acso.usagers.id as id FROM acso.usagers WHERE acso.usagers.date_suppression is null"
tags => ["idUsagers"]
}} filter {}output {
elasticsearch {
action => delete
index => "usagers"
document_type => "atms"
doc_as_upsert => true
document_id => "%{id}"
hosts => "xxxxxx.example.org"}}
最佳答案
如果我正确地理解了您的问题,您需要从ES中删除JDBC查询未返回的任何文档。如果这是正确的,我看到两个选项:
运行查询,将结果放入新索引中,并将该索引用于查询。如果需要,您可以创建一个index alias来隐藏应用程序中的实际索引名。
在ES中运行查询和“AA>”任何文档以显示它们仍然存在。update未标记的文档。