PostgreSQL 自管理连接器教程
编辑PostgreSQL 自管理连接器教程
编辑本教程将引导您完成为 PostgreSQL 数据源创建自管理连接器的过程。您将使用 Kibana UI 中的自管理连接器 工作流程。这意味着您将在自己的基础设施上部署连接器。有关此连接器的更多信息,请参阅Elastic PostgreSQL 连接器参考。
您将使用连接器框架 来创建连接器。在本练习中,您将在终端(或 IDE)和 Kibana UI 中进行操作。
如果您想为其他数据源部署自管理连接器,请使用本教程作为蓝图。请参阅可用自管理连接器 的列表。
想要使用 Docker Compose 快速开始测试自管理连接器?请参阅elastic/connectors
存储库中的此README 以了解更多信息。
先决条件
编辑Elastic 先决条件
编辑首先,请确保您满足自管理连接器的先决条件。
PostgreSQL 先决条件
编辑您需要:
- PostgreSQL 11+ 版本。
- 表必须由 PostgreSQL 用户拥有。
- 需要数据库
超级用户
权限才能索引所有数据库表。
您应该启用 PostgreSQL 事务提交时间的记录。否则,每次同步都会索引所有数据。默认情况下,track_commit_timestamp
为 off
。
通过在 PostgreSQL 服务器命令行上运行以下命令来启用它:
ALTER SYSTEM SET track_commit_timestamp = on;
然后重新启动 PostgreSQL 服务器。
步骤
编辑要完成本教程,您需要完成以下步骤:
创建 Elasticsearch 索引
编辑Elastic 连接器使您能够在 Elasticsearch 中创建可搜索的、只读的数据源副本。设置自管理连接器的第一步是创建一个索引。
在Kibana UI 中,从主菜单导航到搜索 > 内容 > Elasticsearch 索引,或使用全局搜索字段。
创建一个新的连接器索引
- 在选择摄取方法下,选择连接器。
- 从连接器列表中选择PostgreSQL。
- 命名您的索引,并可选择更改语言分析器以匹配数据源的自然语言。(您提供的索引名称会自动以
search-
为前缀。) - 保存您的更改。
索引已创建并准备配置。
设置连接器
编辑创建索引后,您可以设置连接器。UI 将引导您完成此过程。
- 编辑连接器的名称和描述。 这将帮助您的团队识别连接器。
-
克隆并编辑连接器服务代码。在此示例中,我们将使用Python 框架。请按照以下步骤操作:
- 使用以下命令在本地克隆或派生该存储库:
git clone https://github.com/elastic/connectors
。 - 在您选择的编辑器中打开
config.yml
配置文件。 -
将
host
、api_key
和connector_id
的值替换为您之前收集的值。对于此连接器,请使用service_type
值postgresql
。展开以查看示例
config.yml
文件将
host
、api_key
和connector_id
的值替换为您自己的值。对于此连接器,请使用service_type
值postgresql
。elasticsearch: host: <https://<my-elastic-deployment.es.us-west2.gcp.elastic-cloud.com>> # Your Elasticsearch endpoint api_key: '<YOUR-API-KEY>' # Your top-level Elasticsearch API key ... connectors: - connector_id: "<YOUR-CONNECTOR-ID>" api_key: "'<YOUR-API-KEY>" # Your scoped connector index API key (optional). If not provided, the top-level API key is used. service_type: "postgresql" # Self-managed connector settings connector_id: '<YOUR-CONNECTOR-ID>' # Your connector ID service_type: 'postgresql' # The service type for your connector sources: # mongodb: connectors.sources.mongo:MongoDataSource # s3: connectors.sources.s3:S3DataSource # dir: connectors.sources.directory:DirectoryDataSource # mysql: connectors.sources.mysql:MySqlDataSource # network_drive: connectors.sources.network_drive:NASDataSource # google_cloud_storage: connectors.sources.google_cloud_storage:GoogleCloudStorageDataSource # azure_blob_storage: connectors.sources.azure_blob_storage:AzureBlobStorageDataSource postgresql: connectors.sources.postgresql:PostgreSQLDataSource # oracle: connectors.sources.oracle:OracleDataSource # sharepoint: connectors.sources.sharepoint:SharepointDataSource # mssql: connectors.sources.mssql:MSSQLDataSource # jira: connectors.sources.jira:JiraDataSource
- 使用以下命令在本地克隆或派生该存储库:
运行连接器服务
编辑配置连接器代码后,您可以运行连接器服务。
在您的终端或 IDE 中:
-
cd
到connectors
克隆/派生的根目录。 - 运行以下命令:
make run
。
连接器服务现在应该正在运行。UI 将让您知道连接器已成功连接到 Elasticsearch。
这里我们在本地工作。在生产环境中,您将连接器服务部署到您自己的基础设施。如果您更喜欢使用 Docker,请参阅存储库文档以获取说明。
同步您的 PostgreSQL 数据源
编辑输入您的 PostgreSQL 数据源详细信息
编辑配置连接器后,您可以使用它来索引数据源。
您现在可以在 Kibana UI 中输入您的 PostgreSQL 实例详细信息。
输入以下信息:
- 主机。PostgreSQL 实例的服务器主机地址。
- 端口。PostgreSQL 实例的端口号。
- 用户名。PostgreSQL 帐户的用户名。
- 密码。该用户的密码。
- 数据库。PostgreSQL 数据库的名称。
-
以逗号分隔的表列表。
*
将获取配置数据库中所有表的数据。
输入所有这些详细信息后,选择保存配置。
启动同步
编辑如果您导航到 Kibana UI 中的概述选项卡,您可以看到连接器的摄取状态。这现在应该已更改为已配置。
现在是时候通过选择同步按钮来启动同步了。
如果您导航到运行连接器服务的终端窗口,您应该会看到如下输出:
[FMWK][13:22:26][INFO] Fetcher <create: 499 update: 0 |delete: 0> [FMWK][13:22:26][INF0] Fetcher <create: 599 update: 0 |delete: 0> [FMWK][13:22:26][INFO] Fetcher <create: 699 update: 0 |delete: 0> ... [FMWK][23:22:28][INF0] [oRXQwYYBLhXTs-qYpJ9i] Sync done: 3864 indexed, 0 deleted. (27 seconds)
这确认连接器已从您的 PostgreSQL 表中提取记录并将它们转换为 Elasticsearch 索引中的文档。
在 Kibana UI 的文档选项卡中验证您的 Elasticsearch 文档。
如果您对结果满意,请在调度选项卡中设置定期同步计划。这将确保 Elasticsearch 中的可搜索数据始终与 PostgreSQL 数据源的更改保持同步。