如何通过 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

相关推荐
kngines4 小时前
【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-2-性能调优工具箱
大数据·elasticsearch·搜索引擎
童先生1 天前
docker安装的es报错了?failed to obtain node locks怎么破~
elasticsearch·docker·jenkins
neo_Ggx231 天前
ElasticSearch 入门到放弃(持续更新中)
elasticsearch·搜索引擎·wpf
小兔崽子去哪了1 天前
初试 Elasticsearch
数据库·elasticsearch
007php0071 天前
go语言zero框架拉取内部平台开发的sdk报错的修复与实践
大数据·elasticsearch·搜索引擎
Elasticsearch1 天前
Elasticsearch:语义文本 - 更简单、更好、更精炼、更强大 8.18
elasticsearch
SaebaRyo1 天前
使用Nestjs + ElasticSearch实现电商搜索功能
后端·elasticsearch·nestjs
阿昊真人2 天前
ESP-IDF ubuntu版本 V5.2
linux·ubuntu·elasticsearch
勤不了一点2 天前
【ELK】ElasticSearch 集群常用管理API操作
linux·elk·elasticsearch