使用Elasticsearch做站内搜索,后台框架是laravel,所以使用的这个laravel包,"Elasticquent"(https://github.com/elasticquent/Elasticquent),
**问题:**
假如mysql中有一个artiles表,现在有新的article加入,那么,Elasticsearch的索引怎么自动同步mysql的artiles表中的数据?
**问题:**
假如mysql中有一个artiles表,现在有新的article加入,那么,Elasticsearch的索引怎么自动同步mysql的artiles表中的数据?
4 个回复
Xargin
赞同来自: stab 、medcl 、jberg 、zaravel
1.在业务系统里做双写
2.用elasticsearch-jdbc之类的工具来做全量和增量同步
3.用阿里的canal来做数据库binlog->kafka->es的同步,需要开发,而且依赖比较多,小公司选择还是慎重些吧
jberg
赞同来自:
zhuowenji - 90后也老了
赞同来自:
[url=https://github.com/zhuowenji/Laravel5.2-Demo]https://github.com/zhuowenji/Laravel5.2-Demo[/url] github
yqcute
赞同来自:
在业务系统里面对es数据进行操作(增加和修改)。毕竟系统一般来说写入和修改的操作比较少。并且es的创建和修改索引速度很快。
如果担心增改es的速度或者其他问题的话,可以使用异步读写。如需要修改的信息存入(或通知)redis或者kafka等中间件,后端写cron将数据刷新到es里面。这种会更加安全,对原有的业务系统影响也比较小。可以避免es卡主的时候,业务系统挂掉。