gpt4 book ai didi

mysql - 如何从mysql更新Elasticsearch数据?

转载 作者:行者123 更新时间:2023-11-29 07:03:55 25 4
gpt4 key购买 nike

我在 mysql 上有 3 个表。

并将数据索引到elasticsearch。

它与下面一起工作。(logstash 配置)

input {

jdbc {
jdbc_driver_library => "lib/mysql-connector-java-5.1.33.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/test"
jdbc_user => "test"
jdbc_password => "test"
statement => "SELECT * FROM TABLE1"
schedule => "* * * * *"
type => "table1"


}
//
// two more inputs
//

}

output {
stdout {codec => rubydebug}
if [type] == "table1" {
elasticsearch {
hosts => ["localhost:9200"]
index => "test"
document_type => "%{type}"
document_id => "%{id}"
template => "./template"
template_overwrite => true
}
}
//
// two more outputs
//

}

我删除了另外两个输入和输出,以及 mysql 上的 TABLE1 中的一些行。

并启动了logstash。

未更新。

所以,输入

curl -XDELETE 'http://localhost:9200/*'

并再次重新启动logstash。

但是在elasticsearch上再次添加了三个具有相同行的表。

如何自动更新elasticsearch数据?

最佳答案

我猜你错过了use column value , tracking column然后输入您的 jdbc 输入:

jdbc {
jdbc_driver_library => "lib/mysql-connector-java-5.1.33.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/test"
jdbc_user => "test"
jdbc_password => "test"
statement => "SELECT * FROM TABLE1"
schedule => "* * * * *"
type => "table1"
use_column_value => true
tracking_column => "id" <-- this should be the incrementing value in your table
tracking_column_type => "numeric"
}

tracking_column 用于在更新表中的值时跟踪要映射的列。这应该对你有用。希望能帮助到你!

关于mysql - 如何从mysql更新Elasticsearch数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com