elasticsearch Logstash Sql\u Last\u值日期格式似乎不相关,elasticsearch,logstash,logstash-configuration,logstash-jdbc,elasticsearch,Logstash,Logstash Configuration,Logstash Jdbc" /> elasticsearch Logstash Sql\u Last\u值日期格式似乎不相关,elasticsearch,logstash,logstash-configuration,logstash-jdbc,elasticsearch,Logstash,Logstash Configuration,Logstash Jdbc" />

elasticsearch Logstash Sql\u Last\u值日期格式似乎不相关

elasticsearch Logstash Sql\u Last\u值日期格式似乎不相关,elasticsearch,logstash,logstash-configuration,logstash-jdbc,elasticsearch,Logstash,Logstash Configuration,Logstash Jdbc,您好,我正在使用logstash将文档从MSSQL服务器索引到elasticsearch,我正在使用下面的配置进行增量索引,我正在使用名为modified_date的列,但dateformat有问题 下面是我的配置 input { jdbc { jdbc_driver_library => "D:/Users/xxxxx/Desktop/driver/mssql-jdbc-7.4.1.jre12-shaded.jar" jdbc_driver_class => "com.micros

您好,我正在使用logstash将文档从MSSQL服务器索引到elasticsearch,我正在使用下面的配置进行增量索引,我正在使用名为modified_date的列,但dateformat有问题

下面是我的配置

input {
jdbc {
jdbc_driver_library => "D:/Users/xxxxx/Desktop/driver/mssql-jdbc-7.4.1.jre12-shaded.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://EC2AMAZ-J90JR4A\SQLEXPRESS:1433;databaseName=xxxx;"
jdbc_user => "xxx"
jdbc_password => "xxxx"
jdbc_paging_enabled => true
tracking_column => modified_date
use_column_value => true
clean_run => true
tracking_column_type => "timestamp"
schedule => "*/1 * * * *"
statement => "Select pl.policynumber,pl.policyholdername,pl.dob,pl.age,pl.client_address clientaddress,cl.claimnumber,Cl.claimtype,cl.modified_date modified_date,Cl.is_active from policy pl
inner join claim Cl on Cl.policynumber=pl.policynumber where cl.modified_date >:sql_last_value"
}
}
filter {
if [is_active] {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "index"
            }
        }
        mutate {
            remove_field => [ "is_active","@version","@timestamp" ]
        }
    } else {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "delete"
            }
        }
        mutate {
            remove_field => [ "is_active","@version","@timestamp" ]
        }
} 
}
output {
elasticsearch {
hosts => "https://e5a4a4a4de7940d9b12674d62eac9762.eastus2.azure.elastic-cloud.com:9243"
user => "elastic"
password => "xxxxx"
index => "xxxx"
action => "%{[@metadata][elasticsearch_action]}"
document_type => "_doc"
document_id => "%{claimnumber}"

}
stdout { codec => rubydebug }
}
附加屏幕截图


日期格式似乎是错误的,因为每次它都会选择所有文档而不是修改的文档,因此需要有人对此问题提供见解?

我认为您需要删除/注释输入参数
clean\u run=>true
,这将使
sql\u last\u值
被忽略,每次完成数据加载时都会产生此结果

添加其他(以下)参数可以调试和跟踪
sql\u last\u值的生成方式:

last_run_metadata_path => "D:\logstash<version>\jdbc_lastrun\filename"

我认为您需要删除/注释输入参数
clean\u run=>true
,这将使
sql\u last\u值
被忽略,每次完成数据加载时都会产生此结果

添加其他(以下)参数可以调试和跟踪
sql\u last\u值的生成方式:

last_run_metadata_path => "D:\logstash<version>\jdbc_lastrun\filename"

添加配置以供参考,工作正常。非常感谢你的帮助

input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://EC2AMAZ-J90JR4A\SQLEXPRESS:1433;databaseName=xxxx;"
jdbc_user => "xxxx"
jdbc_password => "xxx"
jdbc_paging_enabled => true
tracking_column => modified_date
use_column_value => true
clean_run => true
tracking_column_type => "timestamp"
schedule => "*/1 * * * *"
statement => "Select* from claim where modified_date >:sql_last_value"
last_run_metadata_path => "D:\Users\xxxx\Desktop\logstash-7.2.0\jdbc_lastrun\jdbc_last_run.txt"
jdbc_default_timezone => "UTC" 
}
}
filter {
mutate {
   remove_field => ["@version","@timestamp"]
 }
}
output {

stdout { codec => rubydebug }
}

添加配置以供参考,工作正常。非常感谢你的帮助

input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://EC2AMAZ-J90JR4A\SQLEXPRESS:1433;databaseName=xxxx;"
jdbc_user => "xxxx"
jdbc_password => "xxx"
jdbc_paging_enabled => true
tracking_column => modified_date
use_column_value => true
clean_run => true
tracking_column_type => "timestamp"
schedule => "*/1 * * * *"
statement => "Select* from claim where modified_date >:sql_last_value"
last_run_metadata_path => "D:\Users\xxxx\Desktop\logstash-7.2.0\jdbc_lastrun\jdbc_last_run.txt"
jdbc_default_timezone => "UTC" 
}
}
filter {
mutate {
   remove_field => ["@version","@timestamp"]
 }
}
output {

stdout { codec => rubydebug }
}

我的JDBC_驱动程序存在内部加载程序问题,因此我已将日志存储从7.2.0升级到7.5.2 Latest更新日志存储Sql_last_值后,Ex无法正常工作:如果我使用版本7.2.0,则“2020-02-05T13:27:09.023”(在文件last_run_metadata_路径中更新日期)没有问题如果我使用了错误更新的7.5.2最新日期,例如:“2020-02-05 07:14:20.313000000”而不是“2020-02-05T13:27:09.023”,因此我无法进行增量索引。我已在display.elastic.co中就此打开了一个主题,请检查下面的链接,因为我已经给出了一个详细的解释与屏幕截图仍然是开放的主题发现作为开放的问题。你可以照做!我的JDBC_驱动程序存在内部加载程序问题,因此我已将日志存储从7.2.0升级到7.5.2 Latest更新日志存储Sql_last_值后,Ex无法正常工作:如果我使用版本7.2.0,则“2020-02-05T13:27:09.023”(在文件last_run_metadata_路径中更新日期)没有问题如果我使用了错误更新的7.5.2最新日期,例如:“2020-02-05 07:14:20.313000000”而不是“2020-02-05T13:27:09.023”,因此我无法进行增量索引。我已在display.elastic.co中就此打开了一个主题,请检查下面的链接,因为我已经给出了一个详细的解释与屏幕截图仍然是开放的主题发现作为开放的问题。你可以照做!