Debezium Postgres 和 ElasticSearch - 在 ElasticSearch 中存储复杂对象
Posted
技术标签:
【中文标题】Debezium Postgres 和 ElasticSearch - 在 ElasticSearch 中存储复杂对象【英文标题】:Debezium Postgres and ElasticSearch - Store complex Object in ElasticSearch 【发布时间】:2020-12-29 23:50:11 【问题描述】:我在 Postgres 中有一个带有表“product”的数据库,该表通过“sales_Channel”以 1 到 n 连接。所以 1 个产品可以有多个 SalesChannel。现在我想把它转移到 ES 并保持它是最新的,所以我正在使用 debezium 和 kafka。将单个表转移到 ES 是没有问题的。我可以查询 SalesChannels 和 Products。但我需要将所有销售渠道作为结果附加的产品。如何让我 debezium 转移这个?
产品映射
"settings":
"number_of_shards": 1
,
"mappings":
"_doc":
"properties":
"id":
"type": "integer"
接收产品
"name": "es-sink-product",
"config":
"connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
"tasks.max": "1",
"topics": "product",
"connection.url": "http://elasticsearch:9200",
"transforms": "unwrap,key",
"transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
"transforms.unwrap.drop.tombstones": "false",
"transforms.unwrap.drop.deletes": "false",
"transforms.key.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
"transforms.key.field": "id",
"key.ignore": "false",
"type.name": "_doc",
"behavior.on.null.values": "delete"
【问题讨论】:
【参考方案1】:您要么需要使用发件箱模式,请参阅https://debezium.io/documentation/reference/1.2/configuration/outbox-event-router.html
或者您可以使用聚合对象,请参阅 https://github.com/debezium/debezium-examples/tree/master/jpa-aggregations https://github.com/debezium/debezium-examples/tree/master/kstreams-fk-join
【讨论】:
以上是关于Debezium Postgres 和 ElasticSearch - 在 ElasticSearch 中存储复杂对象的主要内容,如果未能解决你的问题,请参考以下文章
Kafka Connect Debezium postgres
debezium 是不是支持捕获 postgres 模式更改事件?
Debezium Postgres 和 ElasticSearch - 在 ElasticSearch 中存储复杂对象
debezium postgres 找不到`io/debezium/util/IoUtil`