elasticsearch 仅使用Logstash向ES发送新数据,以防止重复,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 仅使用Logstash向ES发送新数据,以防止重复,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 仅使用Logstash向ES发送新数据,以防止重复

elasticsearch 仅使用Logstash向ES发送新数据,以防止重复,elasticsearch,logstash,elasticsearch,Logstash,使用Logstash,我想知道如何将数据发送到ES而不会出现重复。这意味着我想发送ES实例中还没有的数据,而不是实例中已经存在的数据 今天,我将删除ES中特定索引上的所有数据,然后重新发送数据库中的所有数据。这可以防止重复,但并不理想,因为我必须手动删除数据 这是我当前使用的.config: input { jdbc { jdbc_driver_library => "/Users/Carl/Progs/logstash-6.3.0/mysql-connector-

使用Logstash,我想知道如何将数据发送到ES而不会出现重复。这意味着我想发送ES实例中还没有的数据,而不是实例中已经存在的数据

今天,我将删除ES中特定索引上的所有数据,然后重新发送数据库中的所有数据。这可以防止重复,但并不理想,因为我必须手动删除数据

这是我当前使用的.config:

input {
    jdbc {
        jdbc_driver_library => "/Users/Carl/Progs/logstash-6.3.0/mysql-connector-java/mysql-connector-java-5.1.46-bin.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://*****"
        jdbc_user => "****"
        jdbc_password => "*****"
        schedule => "0 * * * *"
        statement => "SELECT * FROM carl.customer"
    }
}
filter {
    mutate {convert => { "long" => "float"} }
}
output {
    #stdout { codec => json_lines }
    elasticsearch {
        hosts => "localhost"
        index => "customers"
    }
}

这个答案应该会有帮助:您的表中是否有一列记录创建或更新的时间?我从中发送数据的数据库会通过清除整个数据库来更新,然后用更新的数据加载它。这是因为我使用的是ETL工具。因此,数据不只是创建了一个更新的列,而是记录可以在创建后得到更新。我正在考虑找到一种使用Logstash自动删除索引的方法。