Postgresql同步数据到Elasticsearch

news/发布时间2024/5/17 15:10:32

Postgresql同步数据到es需要借助中间工具连接器,连接器部署主要有两种方式,一种是基于Elastic云托管的连接器(Native connectors), 另外一种自己安装管理的连接器(self-managed connector). 

托管方式连接器的使用方法文档:https://www.elastic.co/guide/en/enterprise-search/8.13/native-connectors.html

本文主要介绍如何自己安装配置连接器:

前提条件:

  • Linux 或者 macOS系统
  • Python 3.10或者更高版本
  • 系统安装了Docker与Docker compose

我们在启动连接器的时候,要根据提示来设置连接器配置,所以必做还要安装 `build-essential` , 否则会报错

sudo apt install build-essential

 

 


 

 

 

下载连接器仓库源码:

git clone https://github.com/elastic/connectors.git && cd connectors 
cp config.yml.example config.yml  # 要先手动复制一份配置文件并命名为config.yml,否则后面运行脚本会报找不到这个文件  
 

执行安装脚本

k3s@k3s-test-master:~/connectors$ ELASTIC_PASSWORD="my_new_password" CONNECTORS_VERSION=8.11.2.0 ./scripts/stack/run-stack.sh --no-snapshot
~/connectors/scripts/stack ~/connectors
Using compose file at: /home/k3s/connectors/scripts/stack/docker/docker-compose.yml
set PROJECT_ROOT to /home/k3s/connectors
ELASTICSEARCH_VERSION=8.11.2
KIBANA_VERSION=8.11.2
CONNECTORS_VERSION=8.11.2.0
Starting Elasticsearch...
Creating network "docker_connectors_stack_net" with the default driver
Creating docker_elasticsearch_1 ... done
Connecting to Elasticsearch on http://localhost:9200
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Waiting for Elasticsearch to be running...
Starting Kibana...
docker_elasticsearch_1 is up-to-date
Creating docker_kibana_1 ... done
Connecting to Kibana on http://localhost:5601
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Waiting for Kibana to be running...
Updating Kibana password in Elasticsearch running on http://localhost:9200
{ }
Do you want to run the configurator? (y/n) y
ELASTICSEARCH_VERSION=8.11.2
KIBANA_VERSION=8.11.2
CONNECTORS_VERSION=8.11.2.0
config.yml already exists in /home/k3s/connectors/scripts/stack/connectors-config. Not overwriting.
ELASTICSEARCH_VERSION=8.11.2
KIBANA_VERSION=8.11.2
CONNECTORS_VERSION=8.11.2.0

                                                                   
脚本会调用 docker-compose安装 连接器、kibana和es,变量ELASTIC_PASSWORD指定kibana登陆密码,CONNECTORS_VERSION 指定这三个服务使用的版本(如果不使用脚本安装的话最好也要保持它们的版本一致).
 
Kibana和ES容器启动后,会提示选择一个连接器类型,我这里使用的数据源是postgres, 使用鼠标上下键选择,enter确定

 

 创建完成,验证:

k3s@k3s-test-master:~/connectors$ docker ps
CONTAINER ID   IMAGE                                                             COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
4afc1d4bb5fd   docker.elastic.co/enterprise-search/elastic-connectors:8.11.2.0   "/app/bin/elastic-in…"   7 minutes ago    Up 7 minutes                                                          docker_elastic-connectors_1
a0779b7bf5a6   docker.elastic.co/kibana/kibana:8.11.2                            "/bin/tini -- /usr/l…"   19 minutes ago   Up 19 minutes   0.0.0.0:5601->5601/tcp, :::5601->5601/tcp             docker_kibana_1
f21bf94c223b   docker.elastic.co/elasticsearch/elasticsearch:8.11.2              "/bin/tini -- /usr/l…"   20 minutes ago   Up 20 minutes   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp   docker_elasticsearch_1

 

 

浏览器输入kibana地址:http://[服务器IP]:5601
帐号是 elastic, 密码是刚才设置的环境变量ELASTIC_PASSWORD的值。
进入后,点击左上角三条横线图标,然后Search栏Content,在右边Available indices栏就可以看到我们刚才创建的索引了

 

点击进入创建的索引,在Configuration配置中选择右边Sync菜单中Full Content,就开始把Postgresql数据库的相关库和表导入到es了

 

同步完成后页面会有提示,或者从连接器的日志也可以看出来

k3s@k3s-test-master:~/connectors$ docker logs 4afc 
[FMWK][14:40:33][INFO] Running connector service version 8.11.2.0
[FMWK][14:40:33][INFO] Loading config from /config/config.yml
[FMWK][14:40:33][INFO] Running preflight checks
[FMWK][14:40:33][INFO] Waiting for NodeConfig(scheme='http', host='localhost', port=9200, path_prefix='', headers={}, connections_per_node=10, request_timeout=10.0, http_compress=False, verify_certs=True, ca_certs=None, client_cert=None, client_key=None, ssl_assert_hostname=None, ssl_assert_fingerprint=None, ssl_version=None, ssl_context=None, ssl_show_warn=True, _extras={}) (so far: 0 secs)
[FMWK][14:40:33][INFO] Extraction service is not configured, skipping its preflight check.
[FMWK][14:40:33][INFO] Job Scheduling Service started, listening to events from http://localhost:9200
[FMWK][14:40:33][INFO] Job Execution Service started, listening to events from http://localhost:9200

[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Executing full sync
[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Filtering validation started
[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Collecting local document ids
[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Iterating on remote documents
[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Sync progress -- created: 0 | updated: 0 | deleted: 0
[FMWK][13:19:08][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Sync progress -- created: 0 | updated: 100 | deleted: 0
[FMWK][13:19:09][INFO] [Connector id: z0F3jY4BelYPyai-qYpX, index name: search-bc0, Sync job id: 40GDj44BelYPyai-MYrM] Sync ended with status completed -- created: 0 | updated: 131 | deleted: 0 (took 1 seconds)

 

 
 
 
 
如果要添加索引的话,可以在 Content页面右上角"Create a new index"

 

 
选择"Use a connector"

 Select a connector 页面选择你的数据源类型,点击 "Continue"

输入索引名字,然后“Continue"

 点击”Generate API key" 创建一个api

 

 

 

 把生成的新的连接配置填入连接器配置文件:

k3s@k3s-test-master:~/connectors$ cat scripts/stack/connectors-config/config.yml
connectors:
- api_key: eUVHa2lvNEJlbFlQeWFpLXhJcmY6S1BDTHBHZElTQkNzMVpoUzFveFJjUQ==connector_id: ykGkio4BelYPyai-xYrGservice_type: postgresql
- connector_id: "5EGLj44BelYPyai-lIpr"service_type: "postgresql"api_key: "NVVHTGo0NEJlbFlQeWFpLTdZclM6VEpOZEwwTWhSTm1pUDJLdGExXzdvdw=="
elasticsearch.host: http://localhost:9200
elasticsearch.password: my_new_password
elasticsearch.username: elastic

 

 
 
 
重启连接器容器:
k3s@k3s-test-master:~/connectors$ docker restart docker_elastic-connectors_1
docker_elastic-connectors_1

 

重启完成后就可以回到刚才新建的索引的 “Configuration"第4步,填入你需要连接的数据库相关信息,保存即可

 

我们也可以在”Scheduling"选项卡中打开自动同步,并设置同步频率.

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/85162106.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

2024年3月30号java学习

集合集合中的长度不固定,集合中只能存储引用数据类型,不能够存放基本数据类型,需要变成基本数据类型对应的包装类。 基本数据类型的包装类ArrayList ArrayList<类型> 变量名 = new ArrayList<>();示例代码 package arrayList;import java.util.ArrayList;public …

ESP8266使用笔记

ESP8266介绍上图所示的是ESP-01s,我目前使用的是由安信可科技公司开发的模块,搭有板载天线。可以由AP/STA/AP+STA三种工作模式。其中AP工作模式是作为WIFI的客户端存在,其他设备主动链接在AP设备上,可以接收AP设备发送的消息,也可以反过来给AP设备发送消息。 STA工作模式则…

JavaImprove--Lesson07--异常处理的两种方式,collection集合

一.Java异常处理的两种方式 Java的异常机制是一种处理程序中错误的方式,它包括异常的抛出、捕获和处理。异常是在程序运行过程中发生的异常事件,如数学运算中的除0异常、数组越界、空指针异常等。 在Java中,异常被视为一种对象,可以通过使用try-catch语句块来捕获和处理。当…

DreamerV2

DreamerV2 DreamerV2是一个用于强化学习的算法,专注于从像素输入中学习复杂的行为。它是Dreamer算法的升级版本,由DeepMind的研究团队开发。DreamerV2利用世界模型的概念,这意味着它通过学习一个模型来预测环境的未来状态,从而在这个预测的世界里进行计划和决策。这种方法使…

莫队算法学习笔记

Part.1 引入 当你遇到一个区间询问但是难以用线段树等 log 算法维护的时候怎么办?那就是——莫队! 莫队这个东西能支持区间修改、区间查询的操作,但是这种算法要求离线。莫队有很多种,详细请看下文。 Part.2 普通莫队 我们先来看一道例题(P1972 的削弱版):给你一个长度为…

以太网:UDP包结构

参考: UDP协议报文结构_udp报文结构-CSDN博客 千兆以太网(3):接收——包校验和数据筛选 - 咸鱼IC - 博客园 (cnblogs.com) 计算机网络啥玩意是源MAC地址,目标MAC地址,源ip地址,目标ip地址_目的mac地址和源mac地址-CSDN博客 数据的校验和筛选 仅供参考 帧首部: 7个h55+h…