首页 > 解决方案 > 当输入中不存在时,elasticsearch logstash 删除

问题描述

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

提前致谢

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"}}

标签: linuxelasticsearchcommand-linelogstash

解决方案


如果我正确理解您的问题,您想从 ES 中删除 JDBC 查询未返回的任何文档。如果这是正确的,我会看到两个选项:

  • 运行查询,将结果放入新索引,然后使用该索引进行查询。如果需要,您可以创建索引别名以隐藏应用程序中的实际索引名称。
  • 运行查询并更新ES 中的任何文档以显示它们仍然存在。 删除未标记的文档。

推荐阅读