关于elasticsearch和数据库同步的几点疑问

我叫小菜菜 2019-01-05 06:57:30
如题。
想请教下各位同行,在使用elasticsearch全文搜索时,采用何种方式保持数据库和es的数据同步问题呢?

因为没有实际应用过,问了度娘等人,都是说采用go-mysql-elasticsearch插件、elasticsearch-jdbc插件,或者Logstash 等监听mysql实例(作为从服务器、或者定时更新等),进行mysql同步Elasticsearch。
删除数据时,需要手动删除elasticsearch的数据。(也就是搜索时能搜索到,点击访问则404)
优点:应用层简单不少。
缺点:要运行第三方插件并且需要手动删除es。


另一种思路时通过应用层进行两次操作(先更新mysql后更新elasticsearch),可以利用aop实现。
优点:能保证应用层数据一致。
缺点:应用层代码会复杂一些,并且通过客户端操作数据库时,会导致数据不一致。

以上。
想请教下各位大神,实际应用过程中,往往是采用怎样的解决方案呢?
感谢!
...全文
987 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥牙 2019-12-10
  • 打赏
  • 举报
回复
最后有结论没,哪种好?第一种貌似有延时, 现在是通过第二种方案,有出现数据不一致的情况. 使用小众数据库,没有现有插件支持同步到ES
我叫小菜菜 2019-08-29
  • 打赏
  • 举报
回复
暂无实际尝试。后期如有实践再来补充。
游北亮 2019-05-20
  • 打赏
  • 举报
回复
2楼说的很好,建议还是binlog方案。 我们是直接购买云服务,有数据同步服务。
nin_Zran 2019-05-20
  • 打赏
  • 举报
回复
使用 logstash插件 连接数据库 进行同步 https://blog.csdn.net/liyongbing1122/article/details/85096187
码匠笔记 2019-01-07
  • 打赏
  • 举报
回复
ES订单数据的同步方案 Mysql数据同步到ES中,大致总结可以分为两种方案: (1) 方案1:监听mysql的binlog,分析binlog将数据同步到ES集群中 优点:业务与ES数据耦合度低,业务逻辑中不需要关心ES数据的写入。 缺点:binglog模式只能使用ROW模式,且引入了新的同步服务,增加了开发量以及维护成本,也增大了ES同步的风险。 (2) 方案2:直接通过ES API将数据写入到ES集群中 优点:简洁明了,能够灵活的控制数据的写入 缺点:与业务耦合严重,强依赖于业务系统的写入方式 同时需要考虑系统的特性,是否需要实时服务,并且要求强一致性。 如果要求,采用方案二,然后做补偿操作,出现失败直接放在队列或者 worker 里面重试,如果重试不成功记录日志和告警,排查问题后做人工补偿。 如果没有要求直接采用 binlog 的读写。 小编为订阅号「码匠笔记」号主,先后就职于 ThoughtWorks、阿里巴巴等互联网公司的经验分享,包含但不限于 JAVA、并发编程、性能优化、架构设计、小程序、开源软件等。有兴趣可以关注一波,一起学习、讨论。
十八道胡同 2019-01-06
  • 打赏
  • 举报
回复
我正在学习java,还没学到elasticsearch全文搜索

帮你顶下,加油,楼主~

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧