即使是不成熟的尝试,也胜于胎死腹中的策略。

Elasticsearch做站内搜索,索引与mysql数据表同步问题

Elasticsearch | 作者 kanjiushi | 发布于2016年06月18日 | 阅读数:14809

使用Elasticsearch做站内搜索,后台框架是laravel,所以使用的这个laravel包,"Elasticquent"(https://github.com/elasticquent/Elasticquent),

**问题:**
假如mysql中有一个artiles表,现在有新的article加入,那么,Elasticsearch的索引怎么自动同步mysql的artiles表中的数据?
已邀请:

Xargin

赞同来自: stab medcl jberg zaravel

有几种方法,看着选吧:
1.在业务系统里做双写
 
2.用elasticsearch-jdbc之类的工具来做全量和增量同步
 
3.用阿里的canal来做数据库binlog->kafka->es的同步,需要开发,而且依赖比较多,小公司选择还是慎重些吧

jberg

赞同来自:

第一和第二种方法容易解决DB映射到ES的n:1问题,但是第三种方法怎么解决DB多表join对应ES中一个doc的问题? @Xargin

zhuowenji - 90后也老了

赞同来自:

yqcute

赞同来自:

我们现在的方案是:
   在业务系统里面对es数据进行操作(增加和修改)。毕竟系统一般来说写入和修改的操作比较少。并且es的创建和修改索引速度很快。 
 
如果担心增改es的速度或者其他问题的话,可以使用异步读写。如需要修改的信息存入(或通知)redis或者kafka等中间件,后端写cron将数据刷新到es里面。这种会更加安全,对原有的业务系统影响也比较小。可以避免es卡主的时候,业务系统挂掉。
 

要回复问题请先登录注册