PostgreSQL 自管理连接器教程

编辑

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

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

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

想要使用 Docker Compose 快速开始测试自管理连接器?请参阅elastic/connectors 存储库中的此README 以了解更多信息。

先决条件

编辑
Elastic 先决条件
编辑

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

PostgreSQL 先决条件
编辑

您需要:

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

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

通过在 PostgreSQL 服务器命令行上运行以下命令来启用它:

ALTER SYSTEM SET track_commit_timestamp = on;

然后重新启动 PostgreSQL 服务器。

步骤

编辑

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

创建 Elasticsearch 索引

编辑

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

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

创建一个新的连接器索引

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

索引已创建并准备配置。

设置连接器

编辑

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

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

    • 使用以下命令在本地克隆或派生该存储库: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. cdconnectors 克隆/派生的根目录。
  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 数据源的更改保持同步。

了解更多

编辑