logstash 计划将重复记录插入到 elasticsearch 中
logstash schedule inserting duplicate records into elasticsearch
我使用 JDBC 输入插件创建了 logstash 配置文件,以将 Oracle 数据库 tables 引入 elasticsearch,并按计划每五分钟进行一次。
它按预期工作,但问题是,它在第 2 次、第 3 次 运行 时插入重复记录。如何避免在elasticsearch中插入重复记录?
请使用 JDBC 输入插件找到我的 logstash 配置文件
input {
jdbc {
jdbc_driver_library => "D:SearchEngine\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"
}
}
请找到我的文档table架构
id ---> Not Null number
FileName ---> varchar2
Path ----> varchar2
File_size ---> varchar2
您需要使用 documents
table 中的 ID 字段。否则ES会自己创建一个id。
因此您的输出应该如下所示:
elasticsearch {
hosts => ["localhost:9200"]
index => "schedule1_documents"
document_id => "%{id}" <-- add this line with the proper ID field
}
我使用 JDBC 输入插件创建了 logstash 配置文件,以将 Oracle 数据库 tables 引入 elasticsearch,并按计划每五分钟进行一次。
它按预期工作,但问题是,它在第 2 次、第 3 次 运行 时插入重复记录。如何避免在elasticsearch中插入重复记录?
请使用 JDBC 输入插件找到我的 logstash 配置文件
input {
jdbc {
jdbc_driver_library => "D:SearchEngine\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"
}
}
请找到我的文档table架构
id ---> Not Null number
FileName ---> varchar2
Path ----> varchar2
File_size ---> varchar2
您需要使用 documents
table 中的 ID 字段。否则ES会自己创建一个id。
因此您的输出应该如下所示:
elasticsearch {
hosts => ["localhost:9200"]
index => "schedule1_documents"
document_id => "%{id}" <-- add this line with the proper ID field
}