引言
如今搜索引擎已经在各大it以及互联网公司普遍使用,今天就针对ElasticSearch的数据实时更新功能做一个全面的记录。
索引更新机制
索引更新主要是全量更新和增量更新两种方式:
全量更新:即将索引全部删除,再重新创建。这种方式一般用于项目刚开始、数据迁移、修改es分片数(修改number_of_shards)、修改分词、定期全量更新数据等。一般定期更新都是通过定时任务更新,根据业务需要定好更新周期。 数据量庞大的系统采用大数据处理平台对数据进行离线处理,而数据量不大的系统中直接使用普通的多线程机制即可进行全量更新。 部署ES的时候需要2套或者以上的索引系统,以便做索引更新时,可以对在用系统进行实时切换,保证不影响业务正常使用canal中间件安装
下载canal安装包,官网地址为:https://github.com/alibaba/canal/releases/download,不过官网地址比较慢,可以使用百度云盘下载,链接:https://pan.baidu.com/s/1y-uYbMlvARkMH_8TtfzY8A ,提取码:ydbo 开启mysql的binlog配置(mysql安装参考 基于centos7环境安装mysql5.7 此文章 ),因为canal是需要通过mysql的日志文件进行数据同步的: 首先需要确认mysql的binlog是否开启,输入 show variables like '%bin_log%'; 结果如下方“log_bin配置图,其中log_bin对应的value为 ON则代表开始,OFF代表关闭 如果log_bin未开启,则需要修改MySQL配置文件,我这边配置文件路径为 /etc/my.cnf ,在配置文件中加入以下配置,重启mysql即可开启MySQL的log_bin
... log_bin配置图
server_id = 1 binlog_format = ROW log_bin = mysql_bin.log //日志有效期 expire-logs-days = 14 //日志文件最大数量 max-binlog-size = 400M