需要澄清 Logstash 配置中使用的 sql_last_value
Need clarification on sql_last_value used in Logstash configuration
大家好我正在使用下面的代码将数据从 MSSql 服务器索引到 elasticsearch 但我不清楚这个 sql_last_value。
input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://xxxx:1433;databaseName=xxxx;"
jdbc_user => "xxxx"
jdbc_paging_enabled => true
tracking_column => modified_date
tracking_column_type => "timestamp"
use_column_value => true
jdbc_password => "xxxx"
clean_run => true
schedule => "*/1 * * * *"
statement => "Select * from [dbo].[xxxx] where modified_date >:sql_last_value"
}
}
filter {
if [is_deleted] {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "delete"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
} else {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "index"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
}
}
output {
elasticsearch {
hosts => "xxxx"
user => "xxxx"
password => "xxxx"
index => "xxxx"
action => "%{[@metadata][elasticsearch_action]}"
document_type => "_doc"
document_id => "%{id}"
}
stdout { codec => rubydebug }
}
这个 sql_last_value 存储在哪里以及如何从物理上查看它?
是否可以将自定义值设置为 sql_last_value?
任何人都可以澄清上述问题吗?
sql_last_value
存储在名为 .logstash_jdbc_last_run
的文件中,根据 docs,它存储在 $HOME/.logstash_jdbc_last_run
中。该文件本身包含最后一个 运行 的时间戳,并且可以将其设置为特定值。
您应该为每个 jdbc_input_plugin
定义 last_run_metadata_path
参数并指向更具体的位置,因为所有 运行ning jdbc_input_plugin
个实例将共享相同的 .logstash_jdbc_last_run
文件默认情况下,并可能导致不需要的结果。
大家好我正在使用下面的代码将数据从 MSSql 服务器索引到 elasticsearch 但我不清楚这个 sql_last_value。
input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://xxxx:1433;databaseName=xxxx;"
jdbc_user => "xxxx"
jdbc_paging_enabled => true
tracking_column => modified_date
tracking_column_type => "timestamp"
use_column_value => true
jdbc_password => "xxxx"
clean_run => true
schedule => "*/1 * * * *"
statement => "Select * from [dbo].[xxxx] where modified_date >:sql_last_value"
}
}
filter {
if [is_deleted] {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "delete"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
} else {
mutate {
add_field => {
"[@metadata][elasticsearch_action]" => "index"
}
}
mutate {
remove_field => [ "is_deleted","@version","@timestamp" ]
}
}
}
output {
elasticsearch {
hosts => "xxxx"
user => "xxxx"
password => "xxxx"
index => "xxxx"
action => "%{[@metadata][elasticsearch_action]}"
document_type => "_doc"
document_id => "%{id}"
}
stdout { codec => rubydebug }
}
这个 sql_last_value 存储在哪里以及如何从物理上查看它? 是否可以将自定义值设置为 sql_last_value?
任何人都可以澄清上述问题吗?
sql_last_value
存储在名为 .logstash_jdbc_last_run
的文件中,根据 docs,它存储在 $HOME/.logstash_jdbc_last_run
中。该文件本身包含最后一个 运行 的时间戳,并且可以将其设置为特定值。
您应该为每个 jdbc_input_plugin
定义 last_run_metadata_path
参数并指向更具体的位置,因为所有 运行ning jdbc_input_plugin
个实例将共享相同的 .logstash_jdbc_last_run
文件默认情况下,并可能导致不需要的结果。