我有一个弹性搜索数据库,如果输入语句中不存在,我想删除所有的文档吗?
你能帮帮我吗,
提前谢谢

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未标记的文档。

10-08 08:09