我使用JDBC输入插件创建了logstash配置文件,以将Oracle数据库表引入elasticsearch,并按计划每五分钟进行一次。

它按预期工作,但问题是,在第二次,第三次运行时插入重复记录。如何避免将重复记录插入elasticsearch ??

请使用JDBC输入插件找到我的Logstash配置文件

input {
      jdbc {
        jdbc_driver_library => "D:\1SearchEngine\data\ojdbc8.jar"
        jdbc_driver_class => "Java::oracle.jdbc.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:XE"
        jdbc_user => "demo"
        jdbc_password => "1234567"
        schedule => "*/5 * * * *"
        statement => "select * from documents"
      }
    }

    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "schedule1_documents"
      }
    }

请找到我的文档表架构
id  ---> Not Null number
FileName ---> varchar2
Path     ----> varchar2
File_size ---> varchar2

最佳答案

您需要使用documents表中的id字段。否则,ES会自己创建一个ID。

因此,您的输出应如下所示:

  elasticsearch {
    hosts => ["localhost:9200"]
    index => "schedule1_documents"
    document_id => "%{id}"              <-- add this line with the proper ID field
  }

关于java - logstash计划,将重复记录插入elasticsearch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50783414/

10-10 13:29