开发者社区> 问答> 正文

canal到elasticsearch同步,数组结构无法同步删除操作

使用官方提供的sql案例,执行如下语句: delete from label; elasticsearch中label数据不会删除。 而执行: delete from user; elasticsearch中user数据可以删除成功。

这两个数据的区别为label在es中以数组形式存储,所以猜测是因为数组发生无法同步删除操作的bug。

原提问者GitHub用户1075482900

展开
收起
云上静思 2023-05-04 12:59:22 90 0
2 条回答
写回答
取消 提交回答
  • 子表删除应该也会触发更新聚合的数据的

    原回答者GitHub用户rewerma

    2023-05-05 10:38:31
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    可以尝试设置 Canal 的 canal.instance.filter.black.regex 参数,将需要同步的表名和字段名都写上,以忽略不需要同步的操作。在设置过滤规则时,需要保证正则表达式能够准确匹配需要过滤的表和字段,避免出现误判,从而确保数据能够正确地同步到 Elasticsearch 中。

    另外,如果在 Elasticsearch 中存储的是数组类型的数据,可以考虑使用 Elasticsearch 的 nested 数据类型,将数组中的元素作为子文档进行存储。这样可以更好地支持数组的操作,并且方便进行数据的查询和分析。需要注意的是,在使用 nested 数据类型时,需要对数据进行正确的建模和索引设计,避免出现数据不一致或性能问题。

    2023-05-04 17:59:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云Elasticsearch体系架构与特性解析 立即下载
开源与云:Elasticsearch应用剖析 立即下载
《Elasticsearch全观测解决方案》 立即下载