Mysql通过Canal同步Elasticsearch( 三 )


Mysql通过Canal同步Elasticsearch

文章插图

Mysql通过Canal同步Elasticsearch

文章插图
修改mytest_user.yml 文件
  • 在 es7 文件夹

Mysql通过Canal同步Elasticsearch

文章插图
dataSourceKey: defaultDS #源数据源的key, 对应上面配置的srcDataSources中的值destination: example # cannal的instance或者MQ的topicgroupId: g1 # 对应MQ模式下的groupId, 只会同步对应groupId的数据esMapping:_index: area_city# es 的索引名称_id: _id # es 的_id, 如果不配置该项必须配置下面的pk项_id则会由es自动分配upsert: truepk: id # 如果不需要_id, 则需要指定一个属性为主键属性# sql映射sql: "SELECT id AS _id, pid, deep, name, pinyin_prefix, pinyin, ext_id, ext_name FROM area_city"#objFields:#_labels: array:;etlCondition: "where a.c_time>={}" # etl 的条件参数commitBatch: 3000 # 提交批大小sql 映射中的 sql语句,为 id 其别名为 _id 不然在同步时为出错
sql 字段不要写`` 不然会有问题,这个折磨我好久 , 
编写完成重启容器:
BASH$ docker restart canal-adapter测试同步全量数据postman 或者 xshell
curl http://localhost:8081/etl/es7/mytest_user.yml -X POST创建表CREATE TABLE `area_city` (`id` bigint(20) NOT NULL COMMENT '城市编号',`pid` int(11) NOT NULL COMMENT '上级ID',`deep` int(11) NOT NULL COMMENT '层级深度;0:?。?:市,2:区 , 3:镇',`name` varchar(255) NOT NULL COMMENT '城市',`pinyin_prefix` varchar(255) NOT NULL COMMENT 'name的拼音前缀',`pinyin` varchar(255) NOT NULL COMMENT 'name的完整拼音',`ext_id` varchar(50) NOT NULL COMMENT '数据源原始的编号;如果是添加的数据,此编号为0\r\n',`ext_name` varchar(255) NOT NULL COMMENT '数据源原始的名称 , 为未精简的名称\r\n') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;表要创建在 application.yml 所设置的数据库中
创建 es 索引PUT /index{"mappings": {"properties": {"id":{"type": "long"},"pid":{"type": "integer"},"deep":{"type": "integer"},"name":{"type": "text"},"pinyin_prefix":{"type": "text"},"pinyin":{"type": "text"},"ext_id":{"type": "text"},"ext_name":{"type": "text"}}} }
Mysql通过Canal同步Elasticsearch

文章插图

推荐阅读