使用nifi将mysql数据全量后增量的数据同步到Elasticsearch 中
本文详细介绍了如何使用NiFi将MySQL中的数据全量后增量地同步到Elasticsearch。文章提供了模板获取链接,并具体说明了将MySQL的test_addition表数据全量导入到Elasticsearch中的land_aoi索引,然后每小时增量同步一次的过程。文章还附带了流程截图,并重点说明了表结构、建索引语句,以及使用ExecuteScript通过轮廓数据计算中心点来获取locatio
·
1、模版获取
https://github.com/qkfm-97/nifi-example/blob/main/etl/mysql-to-es.xml
2、任务说明
将mysql的test_addition表数据先全量导入到elasticsearch中的land_aoi索引中,然后1小时增量同步一次
具体的字段对应和处理如下
源表(test_addition) | 目标索引(land_aoi) | 备注 |
id | id | 索引中的id加上AOI_ |
name | name | |
wkt | outline | 轮廓 |
type_cn | type_cn | 场所类型 |
location | location | 中心位置经纬度 |
3、流程截图
4、重点说明
1)表结构和建索引语句
DROP TABLE IF EXISTS `test_addition`;
CREATE TABLE `test_addition` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`WKT` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '场所轮廓',
`NAME` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '场所名称',
`CITY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '市',
`PROVINCE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省',
`location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '对应的中心点经纬度',
`type_cn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '场所类型',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
#添加索引,number_of_shards数据量大的话 分片多建几个,我们一般是10~15个g一个分片
put land_aoi
{
"aliases": {
},
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"id": {
"type": "keyword"
},
"location": {
"type": "geo_point"
},
"outline": {
"type": "keyword",
"index": false
},
"type_cn": {
"type": "keyword"
}
}
},
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
}
}
2)有的数据没有中心点数据,这边使用了ExecuteScript 通过轮廓数据,计算出中心点获取location
更多推荐
已为社区贡献1条内容
所有评论(0)