java - Logstash计划将重复记录插入elasticsearch

标签 java elasticsearch logstash elastic-stack

我使用 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/

相关文章:

java - 将当前选择的付款信息存储在客户类别中

java - 为什么 ANTLR 没有正确打印 token 集?

java - 拆分 csv,前半部分到一个数组,第二部分到另一个数组

django - 何时使用 Haystack/ElasticSearch 与 Django 的 ORM

elasticsearch - 当给定的拼写没有拼写错误时,如何使elasticsearch建议一个更好的搜索词?

json - Logstash json解析

java - 提取具有相同类名的表数据

elasticsearch - 索引名称中的Elasticsearch日期匹配不起作用

csv - Logstash CSV导入

elasticsearch - Kibana 链接多个仪表板