如何通过 Airbyte 将数据摄取到 Elasticsearch

作者:来自 Elastic Andre Luiz

Airbyte 是一个数据集成工具,可自动化并可扩展地将信息从各种来源传输到不同的目的地。它使你能够从 API、数据库和其他系统提取数据,并将其加载到 Elasticsearch 等平台,以实现高级搜索和高效分析。

本文将介绍如何配置 Airbyte 将数据摄取到 Elasticsearch,涵盖关键概念、先决条件和分步集成过程。

Airbyte 基本概念

Airbyte 在使用过程中涉及多个核心概念,主要包括:

  • 来源(Sources): 定义要提取数据的来源。
  • 目的地(Destinations): 定义数据的发送和存储位置。
  • 连接(Connections): 配置数据来源与目的地之间的关系,包括同步频率。

Airbyte 与 Elasticsearch 的集成

在本次演示中,我们将进行一个集成操作,把存储在 S3 存储桶中的数据迁移到 Elasticsearch 索引。我们将展示如何在 Airbyte 中配置数据来源(S3)和目的地(Elasticsearch)。

前提条件

要完成本次演示,需要满足以下前提条件:

  • 在 AWS 中创建一个存储桶,用于存放包含数据的 JSON 文件。
  • 使用 Docker 在本地安装 Airbyte
  • 在 Elastic Cloud 中创建一个 Elasticsearch 集群,用于存储摄取的数据。

接下来,我们将详细介绍每个步骤。

安装 Airbyte

Airbyte 可以在本地使用 Docker 运行,也可以在云端运行(云端使用会产生费用)。本次演示将使用 Docker 运行本地版本。

安装过程可能需要几分钟。按照安装说明完成后,Airbyte 将可通过以下地址访问:http://localhost:8000

登录后,我们即可开始配置集成。

创建存储桶

在此步骤中,你需要一个 AWS 账户来创建 S3 存储桶。此外,必须设置正确的权限,通过创建策略和 IAM 用户来允许访问该存储桶。

在存储桶中,我们将上传包含不同日志记录的 JSON 文件,这些文件稍后将被迁移到 Elasticsearch。日志文件的内容如下:

json 复制代码
1.  {
2.     "timestamp": "2025-02-15T14:00:12Z",
3.     "level": "INFO",
4.     "service": "data_pipeline",
5.     "message": "Pipeline execution started",
6.     "details": {
7.         "pipeline_id": "abc123",
8.         "source": "MySQL",
9.         "destination": "Elasticsearch"
10.     }
11.  }

以下是加载到存储桶中的文件:

Elastic Cloud 配置

为了简化演示,我们将使用 Elastic Cloud。如果你还没有账户,可以在此创建免费试用账户:Elastic Cloud 注册

在 Elastic Cloud 配置部署后,你需要获取以下信息:

  • Elasticsearch 服务器的 URL。
  • 访问 Elasticsearch 的用户。

要获取 URL,请前往 Deployments > My deployment ,在应用程序中找到 Elasticsearch ,然后点击 "Copy endpoint" 复制端点。

要创建用户,请按照以下步骤操作:

  1. 访问 Kibana > Stack Management > Users
  2. 创建一个具有 superuser 角色的新用户。
  3. 填写相关字段以完成用户创建。

现在我们已经完成所有设置,可以开始在 Airbyte 中配置连接器。

配置源连接器

在此步骤中,我们将为 S3 创建源连接器。为此,我们需要访问 Airbyte 界面并在菜单中选择 "Source" 选项。然后,搜索 S3 连接器。以下是配置连接器的详细步骤:

  1. 访问 Airbyte 并进入 "Sources" 菜单。
  2. 搜索并选择 S3 连接器。
  3. 配置以下参数:
    • Source Name:定义数据源的名称。
    • Delivery Method:选择 "Replicate Records"(推荐用于结构化数据)。
    • Data Format:选择"JSON Format"。
    • Stream Name:定义在 Elasticsearch 中的索引名称。
    • Bucket Name:输入 AWS 中的存储桶名称。
    • AWS Access KeyAWS Secret Key:输入访问凭证。

点击 Set up source 并等待验证完成。

配置目标连接器

在此步骤中,我们将配置目标连接器,即 Elasticsearch。为此,我们需要访问 Airbyte 菜单并选择 "Destination" 选项。然后,搜索 Elasticsearch 并点击搜索结果。接下来,按照以下步骤进行配置:

  1. 访问 Airbyte 并进入 "Destinations" 菜单。
  2. 搜索并选择 Elasticsearch 连接器。
  3. 配置以下参数:
    • Authentication Method:选择 "Username/Password"。
    • Username and Password:使用在 Kibana 中创建的凭证。
    • Server Endpoint:粘贴从 Elastic Cloud 复制的 URL。
  4. 点击 Set up destination 并等待验证完成。

创建 Source 和 Destination 连接

一旦 Source 和 Destination 都已创建,我们就可以建立它们之间的连接,从而完成集成的创建。

以下是创建连接的步骤:

1)在菜单中,进入 Connections 并点击 Create First Connection

2)在接下来的页面中,你可以选择一个已有的 Source 或创建一个新的 Source。由于我们已经创建了 Source,因此选择 Source S3

3)下一步是选择 Destination。由于我们已经创建了 Elasticsearch 连接器,因此选择它以完成配置。

在下一步,需要定义 Sync Mode 以及使用的 schema。由于只创建了日志 schema,因此它将是唯一可供选择的选项。

4)接下来进入"配置连接"步骤。在这里,我们可以定义连接的名称以及集成执行的频率。频率可以通过以下三种方式进行配置:

  • Cron :根据用户定义的 cron 表达式运行同步(例如 0 0 15 * * ?,表示每天 15:00 运行);
  • Scheduled:按指定的时间间隔运行同步(例如每 24 小时、每 2 小时执行一次);
  • Manual:手动运行同步。

在本次演示中,我们将选择 Manual 选项。

最后,点击 Set up Connection,即可建立数据源与目标之间的连接。

从 S3 同步数据到 Elasticsearch

返回到 Connections (连接)界面后,你可以看到已创建的连接。要执行同步过程,只需点击 Sync(同步)。此时,数据从 S3 迁移到 Elasticsearch 的过程将开始。

如果一切顺利,你会看到状态显示为 synced(已同步)。

在 Kibana 中可视化数据

现在,我们将进入 Kibana 以分析数据并检查其是否正确索引。在 Kibana 的 Discovery 部分,我们将创建一个名为 logsData View 。这样,我们就可以仅探索同步后创建的 logs 索引中的数据。

现在,我们可以可视化索引后的数据并对其进行分析。通过这种方式,我们验证了使用 Airbyte 进行的整个迁移流程,其中包含从存储桶加载数据并将其索引到 Elasticsearch。

结论

Airbyte 被证明是一种高效的数据集成工具,使我们能够以自动化方式连接多个数据源和目标。在本教程中,我们演示了如何将 S3 存储桶中的数据摄取到 Elasticsearch 索引中,并重点介绍了该过程的主要步骤。

这种方法有助于摄取大规模数据,并允许在 Elasticsearch 中进行分析,例如复杂搜索、聚合和数据可视化。

参考资料

Airbyte 快速入门
docs.airbyte.com/using-airby...

核心概念
docs.airbyte.com/using-airby...

想获得 Elastic 认证?了解下一期 Elasticsearch 工程师培训的时间!

Elasticsearch 拥有大量新功能,帮助你为特定用例构建最佳搜索解决方案。探索我们的示例笔记本以了解更多信息,开始免费云试用,或立即在本地尝试 Elastic!

原文:How to ingest data to Elasticsearch through Airbyte - Elasticsearch Labs

相关推荐
老纪的技术唠嗑局5 小时前
告别OpenClaw配置丢失——Mindkeeper内测版邀测
大数据·elasticsearch·搜索引擎
Elasticsearch5 小时前
使用 Elasticsearch + Jina embeddings 进行无监督文档聚类
elasticsearch
勇哥的编程江湖7 小时前
flinkcdc streaming 同步数据到es记录过程
大数据·elasticsearch·flink·flinkcdc
曾阿伦7 小时前
Elasticsearch 7.x 常用命令备忘录
大数据·elasticsearch·搜索引擎
斯特凡今天也很帅8 小时前
Elasticsearch数据库专栏(二)DSL语句总结(更新中)
大数据·elasticsearch·搜索引擎
要记得喝水8 小时前
适用于 Git Bash 的脚本,批量提交和推送多个仓库的修改
git·elasticsearch·bash
二十七剑8 小时前
Elasticsearch的索引问题
大数据·elasticsearch·搜索引擎
A__tao17 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
A__tao19 小时前
Elasticsearch Mapping 一键生成 Proto 文件(支持嵌套 + 注释过滤)
大数据·elasticsearch·jenkins
Devin~Y19 小时前
高并发电商与AI智能客服场景下的Java面试实战:从Spring Boot到RAG与向量数据库落地
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag