Elasticsearch的索引同步方案


Elasticsearch的索引同步方案常见的方式有两种:同步方式和异步方式,同步方式是对数据库进行数据维护时操作ES索引,这个方法会在业务方法中增加很多的ES索引操作代码,增加代
码的复杂度,扩展性差。其次,我们的代码存在分布式事务,操作数据表的时候表会访问数据库,向索引添加文档会访问ES,使用数据库本地事务是无法控制整个方法的一致性的,比如:
向ES写成功了由于网络超时导致异常,最终写数据库操作回滚了而写ES操作没有回滚,数据库的数据和ES中的索引不一致。所以,我们的项目选用的是异步方式。

异步方式是通过引入MQ以及canal实现,主要流程是:管理端人员在操作数据库对数据库进行数据的CRUD维护时将对数据的CUD记录在binlog日志中,使用中间件canal读取并解析binlog
日志文件,将解析的CUD记录写入MQ,通过程序创建ES索引并将CUD记录写入ES。用户就可以利用ES查询所需的数据。这样的好处是服务不用直接访问ES,通过MQ将服务和ES解耦
合。我们会在MQ的消息队列中增加x-single-active-consumer参数,启用单一活动消费者模式,确保消息的顺序性。

posted @ 2025-09-15 00:19  K747  阅读(20)  评论(0)    收藏  举报