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

文章插圖

推薦閱讀