将pg库单表数据通过dataX同步至es

使用dataX将pg库单表数据同步至es中

背景:
后台系统使用的数据库是pg库,需要上线一个统一查询的功能,考虑使用es中的模糊查询来实现,故需要将pg库中数据表的数据同步至es。

环境

  1. dataX程序包(直接官网下载tar.gz包即可,上传到服务器上解压)
  2. postgresQL(版本12.12)
  3. es(版本7.4.2)

dataX配置文件

xxx.json文件

{
    "job": {
        "setting": {
            "speed": {
 	        "channel": 5
            },
            "errorLimit": {
               "record": 0,
               "percentage": 0.02
            }
        },
        "content": [
            {
               "reader": {
                   "name": "postgresqlreader",
                   "parameter": {
                       "username": "xxx", //这里填写pg库的账号
                       "password": "xxx", //这里填写pg库的密码
                       "connection": [
                           {
                               "querySql":[
                                   "select id,name, data, detail from xxx_table"
                        	   ],
                        	   // pg库的连接地址
                               "jdbcUrl": [
                                    "jdbc:postgresql://x.x.x.x:5432/xxx"
                               ]
                           }
                        ]
                    }
                },
               "writer": {
                   "name": "elasticsearchwriter",
                   "parameter": {
                       // es的目标端地址
                       "endpoint": "http://x.x.x.x:9200",
                       // 创建的索引名称
			           "index": "your_index_name",
			           "type": "default",
			           "cleanup": true,
                       "settings": {"index" :{"number_of_shards": 1, "number_of_replicas": 0}},
                       "discovery": false,
			           "batchSize": 1000,
			           "splitter": ",",
			           // 这边的列要与上面sql里面定义的查询列一一对应,包括数据类型
			           "column": [
			               {"name":"id", "type":"long"},
			               {"name":"name", "type":"text"},
			               {"name":"data", "type":"text"},
			               {"name":"detail", "type":"text"}
			           ]
                   }
               }
            }
        ]
    }
}

启动dataX

我这边使用的是通过后端程序,定时任务的方式,连接到目标服务器上执行对应的命令这样的逻辑来实现定时同步,具体的后端代码就不展示了,只列举要执行的远程命令。

上面官网下载下来的tar.gz包解压后(tar -zxvf dataX.tar.gz)会得到一个datax的文件夹,进入到该文件夹下的bin目录,将上面定义的xxx.json文件上传到bin目录下,执行python datax.py xxx.json即可

TIP:在测试中,通过后端程序ssh到目标主机执行远程命令时遇到问题的可以参考以下内容

在执行命令之前加上以下内容bash -l -c cd bin文件夹的目录;python datax.py xxx.json即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值