Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日志存储计划将重复记录插入elasticsearch_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash_Elastic Stack - Fatal编程技术网 elasticsearch,logstash,elastic-stack,Java,elasticsearch,Logstash,Elastic Stack" /> elasticsearch,logstash,elastic-stack,Java,elasticsearch,Logstash,Elastic Stack" />

Java 日志存储计划将重复记录插入elasticsearch

Java 日志存储计划将重复记录插入elasticsearch,java,elasticsearch,logstash,elastic-stack,Java,elasticsearch,Logstash,Elastic Stack,我用JDBC输入插件创建了logstash配置文件,将Oracle数据库表引入elasticsearch,并按计划每五分钟创建一次 它按预期工作,但问题是,它在运行第2次、第3次时插入重复记录。我们如何避免在elasticsearch中插入重复记录 请使用JDBC输入插件查找我的日志存储配置文件 input { jdbc { jdbc_driver_library => "D:\1SearchEngine\data\ojdbc8.jar" jdb

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

它按预期工作,但问题是,它在运行第2次、第3次时插入重复记录。我们如何避免在elasticsearch中插入重复记录

请使用JDBC输入插件查找我的日志存储配置文件

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

您需要使用
文档
表中的id字段。否则,ES将自己创建一个id

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

  elasticsearch {
    hosts => ["localhost:9200"]
    index => "schedule1_documents"
    document_id => "%{id}"              <-- add this line with the proper ID field
  }
elasticsearch{
hosts=>[“localhost:9200”]
索引=>“schedule1_文档”

document_id=>“%{id}”我们需要为这个
“%{id}”
传递一些值吗?你能给出一些例子,它应该是你
documents
表中id字段的名称。如果我给
document_id=>“%{id}”
所有的文档都用这个id进行索引,实际上它用这个
{id}覆盖了它
。最后,我的索引中只有一个文档。我已经更新了我的答案,只需将
%{ID}
替换为
%{ID}
非常感谢,它工作得非常好。谢谢你的帮助