在 Debezium 中加入:MySQL 到 Elasticsearch

Posted

技术标签:

【中文标题】在 Debezium 中加入:MySQL 到 Elasticsearch【英文标题】:JOINS in Debezium : MySQL to Elasticsearch 【发布时间】:2021-05-12 12:53:41 【问题描述】:

我一直在尝试设置 mysql 到 Elasticsearch 数据管道以进行实时数据复制。 MySQL 数据库有大约 10 个高度规范化的不同表。但是在 Elasticsearch 中,我需要将这些表中的所有数据都放在一个索引中,这类似于大型复合 JOIN 查询的输出。试了好久,求大神帮忙???

(更改数据库架构是不可行的,因为有很多其他依赖服务。)

例如:

来自 MySQL 的输入:

Table: main_profile
+--------+------+
|  name  | city |  
+--------+------+
| Edward |    1 | 
| Jake   |    9 |
+--------+------+
Table: city_master
+---------+----------+
| city_id |   name   |
+---------+----------+
|       1 | New York |
|      9  | Tampa    |
+---------+----------+

存储在 Elasticsearch 中的文档:


   "0": 
      "name": "Edward",
      "city": "New York"
   ,
   "1": 
      "name": "Jake",
      "city": "Tampa"
   

【问题讨论】:

【参考方案1】:

您可以使用 Kafka Streams 从两个不同的主题进行聚合以构建一个未分类的消息。请查看 Debezium 源的示例https://github.com/debezium/debezium-examples/tree/master/kstreams

例子中的目标是MongoDB,但原理是一样的。

【讨论】:

感谢您的快速回复!能否请您添加更多细节?

以上是关于在 Debezium 中加入:MySQL 到 Elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章

MySQL查询日期在结果中加入汉字“年”“月”“日”

MySQL查询日期在结果中加入汉字“年”“月”“日”

从多个表中加入 mysql 4.0 数据的最快方法?

在 MySQL 中加入 CASE

在 MySql 中加入和求和?

在 MySQL 中加入表的转置