elasticsearch Logstash未更新上次运行的元数据文件,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" /> elasticsearch Logstash未更新上次运行的元数据文件,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" />

elasticsearch Logstash未更新上次运行的元数据文件

elasticsearch Logstash未更新上次运行的元数据文件,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack,在我的日志库中,我想使用查询中的:sql\u last\u value和conf文件中的tracking\u column选项从数据库下载最新数据。我准备好了 last\u run\u metadata\u path,因为我有两条管道用于同一个表,但Logstash只保存了一次last date或停止保存新日期,现在我可以在日志中看到它使用元数据文件中相同的:sql\u last\u值运行查询 这就是我的conf文件的样子,它有许多jdbc输入,下面有一个: jdbc { j

在我的日志库中,我想使用查询中的
:sql\u last\u value
和conf文件中的
tracking\u column
选项从数据库下载最新数据。我准备好了
last\u run\u metadata\u path
,因为我有两条管道用于同一个表,但Logstash只保存了一次last date或停止保存新日期,现在我可以在日志中看到它使用元数据文件中相同的
:sql\u last\u值运行查询

这就是我的conf文件的样子,它有许多jdbc输入,下面有一个:

  jdbc {
        jdbc_driver_library => "/opt/logstash/lib/ojdbc8.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        jdbc_connection_string => ""
        jdbc_user => ""
        jdbc_password => ""
        schedule => "*/15 * * * *"
        statement_filepath => "/etc/logstash/queries/UAT/transactions_UAT.sql"
        use_column_value => true
        tracking_column => 'sys_created_on'
        tracking_column_type => "timestamp"
        last_run_metadata_path => "/etc/logstash/conf.d/lastrun_metadata/transactions_uat_metadata"
        tags => ["transactions_uat"]
  }
元数据文件的内容:

--- 2018-05-26 08:41:55.000000000 -04:00
我可以在日志中看到,Logstash始终使用元数据文件中的相同日期,并且更新了它:

select * from snc_uat.syslog_transaction0007
 where "sys_created_on" >= TIMESTAMP '2018-05-26 08:41:55.000000 -04:00' 

Logstash正在工作,正在下载最近的数据,但不必要地处理已经存在的数据。为什么Logstash不更新元数据?

这是因为您的比较运算符大于或等于,即
=
请将其更改为
,它将解决您的问题。 希望能有帮助