PostgreSQL 自管理连接器教程

编辑

本教程将引导您完成为 PostgreSQL 数据源创建自管理连接器的过程。您将使用 Kibana UI 中的自管理连接器工作流程。这意味着您将在自己的基础设施上部署连接器。有关此连接器的更多信息,请参阅Elastic PostgreSQL 连接器参考

您将使用连接器框架来创建连接器。在本练习中,您将在终端(或您的 IDE)和 Kibana UI 中工作。

如果您想为另一个数据源部署自管理连接器,请将本教程作为蓝图。请参阅可用的自管理连接器列表。

想快速开始使用 Docker Compose 测试自管理连接器吗?有关更多信息,请参阅 elastic/connectors 存储库中的此README

先决条件

编辑
Elastic 先决条件
编辑

首先,请确保您满足自管理连接器的先决条件

PostgreSQL 先决条件
编辑

您需要

  • PostgreSQL 11+ 版本。
  • 表必须由 PostgreSQL 用户拥有。
  • 需要数据库 超级用户 权限才能索引所有数据库表。

您应该启用 PostgreSQL 事务的提交时间记录。否则,所有数据将在每次同步中被索引。默认情况下,track_commit_timestampoff

在 PosgreSQL 服务器命令行上运行以下命令来启用此功能

ALTER SYSTEM SET track_commit_timestamp = on;

然后重新启动 PostgreSQL 服务器。

步骤

编辑

要完成本教程,您需要完成以下步骤

创建 Elasticsearch 索引

编辑

Elastic 连接器使您能够在 Elasticsearch 中创建数据源的可搜索只读副本。设置自管理连接器的第一步是创建索引。

Kibana UI 中,从主菜单导航到搜索 > 内容 > Elasticsearch 索引,或使用全局搜索字段

创建一个新的连接器索引

  1. 选择一个摄取方法下,选择连接器
  2. 从连接器列表中选择PostgreSQL
  3. 命名您的索引,并可选择更改语言分析器以匹配您的数据源的人类语言。(您提供的索引名称会自动添加 search- 前缀。)
  4. 保存您的更改。

索引已创建并准备好进行配置。

设置连接器

编辑

创建索引后,您可以设置连接器。您将在 UI 中逐步完成此过程。

  1. 编辑连接器的名称和描述。这将帮助您的团队识别连接器。
  2. 克隆并编辑连接器服务代码。在此示例中,我们将使用 Python 框架。请按照以下步骤操作

    • 使用以下命令在本地克隆或 fork 该存储库:git clone https://github.com/elastic/connectors
    • 在您选择的编辑器中打开 config.yml 配置文件。
    • hostapi_keyconnector_id 的值替换为您之前收集的值。为此连接器使用 service_typepostgresql

      展开以查看 config.yml 文件示例

      hostapi_keyconnector_id 的值替换为您自己的值。为此连接器使用 service_typepostgresql

      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 中

  1. cd 到您的 connectors 克隆/fork 的根目录。
  2. 运行以下命令: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 数据源的更改保持同步。

了解更多

编辑