elasticsearch - 将 MariaDB 中的多个表同步到 Elasticsearch 7.5
问题描述
我正在尝试使用 JDBC 插件将数据库同步到 Elasticsearch,但不知何故,此配置不适用于多个语句(多个表)。
input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "Java::org.mariadb.jdbc.Driver"
jdbc_connection_string => "jdbc:mariadb://localhost:3306/DB"
jdbc_user => "username"
jdbc_password => "password"
jdbc_paging_enabled => true
tracking_column => "column1"
use_column_value => true
type => "type1"
tracking_column_type => "numeric"
schedule => "*/5 * * * * *"
statement => "SELECT *, UNIX_TIMESTAMP(date_column) AS unix_ts_in_secs FROM table1 WHERE (UNIX_TIMESTAMP(date_column) >= :sql_last_value) ORDER BY date_column ASC"
}
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "Java::org.mariadb.jdbc.Driver"
jdbc_connection_string => "jdbc:mariadb://localhost:3306/DB"
jdbc_user => "username"
jdbc_password => "password"
jdbc_paging_enabled => true
tracking_column => "column1"
use_column_value => true
type => "type2"
tracking_column_type => "numeric"
schedule => "*/5 * * * * *"
statement => "SELECT *, UNIX_TIMESTAMP(date_column) AS unix_ts_in_secs FROM table2 WHERE (UNIX_TIMESTAMP(date_column) >= :sql_last_value) ORDER BY date_column ASC"
}
}
filter {
mutate {
copy => { "id" => "[@metadata][_id]"}
remove_field => ["id", "@version", "unix_ts_in_secs"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test"
document_id => "%{[@metadata][_id]}"
}
}
此配置对于单个语句运行得很好,但不适用于多个查询。我在这里错过了什么?我需要将此数据同步到 Elasticsearch 中的单个索引。
解决方案
通过创建唯一的 document_id 来解决它
推荐阅读
- html - 将替代文本转换为图像标题节点
- javascript - clicked_id 不返回 id,但仍处于非活动状态,并显示消息 Uncaught ReferenceError: clicked_id is not defined at HTMLButtonElement
- r - 根据 R 中 row.name() 的第一部分计算平均值
- nginx - 我无法为我的域获取证书
- amazon-web-services - AWS S3 对象 Lambda 访问点:调用者无权调用 Lambda 函数
- c - 我试图在 C 中多次调用 fork
- symfony5 - Symfony5 / KnpLabs / DoctrineBehaviors / 不记录翻译
- javascript - 网络音频时钟:让频率听起来正确
- python - PyTorch:RuntimeError:为 DETRModel 加载 state_dict 时出错
- python - 如何将字符串日期时间转换为 UTC UNIX?