作者:来自 Elastic Hemendra Singh Lodhi
了解将数据从 AWS S3 导入 Elastic Cloud 的不同选项。这次我们将重点介绍 Elastic S3 Connector。
这是多部分博客系列的第三部分,探讨了将数据从 AWS S3 导入 Elastic Cloud 的不同选项。
在本博客中,我们将了解如何使用 Elastic S3 Native 连接器从 AWS S3 导入数据。Elastic Native 连接器可直接在你的 Elastic Cloud 环境中使用。客户可以选择使用自管理连接器客户端,这些客户端可提供最高程度的自定义选项和灵活性。
- 注 1:查看第 1 部分:Elastic Serverless Forwarder 中选项之间的比较。
- 注 2:Elastic Cloud 部署是遵循下面描述的步骤的先决条件。
Elastic Cloud
查看博客系列第 1 部分,了解如何开始使用 Elastic Cloud。
Elastic S3 原生连接器
就用例而言,用于提取 S3 数据的此选项与之前的选项有很大不同。这次我们将使用 Elastic Cloud 中提供的 Elastic S3 原生连接器。
连接器同步来自数据源的数据并创建可搜索的数据源只读副本。它们提取数据并将其转换为 Elasticsearch 文档。
Elastic S3 原生连接器是提取适合内容搜索的数据的好选择。例如,你可以在 S3 存储桶中同步公司的私有数据(例如内部知识数据和其他文件)并执行基于文本的搜索,或者可以使用大型语言模型 (large language models - LLMs) 执行向量/语义搜索。
S3 连接器可能不是提取可观察性数据(例如日志和指标)的合适选项,因为它的主要用例是提取内容。
功能
- Elastic Cloud 默认提供 Native connectors ,如果需要进一步定制,客户也可以使用自管理连接器。
- 目前,必须在集群中配置企业搜索节点(至少 1 个)才能使用连接器。
- 基本和高级同步规则可用于源数据过滤,例如特定存储桶前缀。
- 同步数据始终存储在用于搜索相关用例的 content tier 中。
- 连接器提供默认和自定义选项,用于数据过滤、提取和转换内容。
- 连接器连接是来自 Elastic Cloud 的公共出口(出站),使用 Elastic Traffic Filter 不会产生影响,因为 Elastic Traffic Filter(专用链接)连接是来自 AWS 的单向专用出口。这意味着数据传输将通过公共网络(HTTPS)进行,并且连接器连接与流量过滤器的使用无关。
- 连接器扩展取决于从源提取的数据量。企业搜索节点大小也取决于 Elasticsearch 大小,建议联系 Elastic 进行大规模数据提取。通常,对于轻度到中度使用情况,企业搜索的 2GB–4GB RAM 大小就足够了。
- 费用仅用于 S3 中的对象存储。当 S3 存储桶和 Elasticsearch 位于同一 AWS 区域内时,从 S3 存储桶到 Elasticsearch 的数据传输没有费用。跨区域数据同步会产生一些数据传输费用,即 S3 存储桶和 Elasticsearch 部署在不同区域。有关 AWS 数据传输定价的更多信息,请点击此处。
数据流
Elastic S3 Connector 在 S3 bucket 和 Elasticsearch 之间同步数据,具体流程如下:
- Elastic S3 连接器配置了 S3 存储桶信息和凭证,并具有连接到存储桶和同步数据所需的权限。
- 根据同步规则,连接器将从指定的存储桶中提取数据。
- 摄取管道在索引之前执行数据解析和过滤。当你创建连接器时,默认情况下可以使用 ent-search-generic-ingestion 管道,该管道执行大多数常见的数据处理任务。
- 也可以根据需要定义自定义摄取管道以转换数据。
- 通过公共 (HTTPS) 网络连接到 AWS S3
注 1:大于 10MB 的内容将不会同步。如果你使用的是自管理连接器,则可以使用自管理本地提取服务来处理更大的二进制文件。
注 2:S3 存储桶级别的原始权限不会同步,并且所有索引文档对于具有 Elastic 部署访问权限的用户都是可见的。客户可以使用基于角色的访问控制、文档级别安全性和字段级别安全性在 Elastic 上管理文档权限
有关连接器架构的更多信息可以在这里获得。
设置
1)创建 S3 存储桶,此处命名为 elastic-s3-native-connector:
AWS Console -> S3 -> Create bucket。你可以将其他设置保留为默认设置,也可以根据需要进行更改。
此存储桶将存储要同步到 Elastic 的数据。连接器支持多种文件类型。为了进行提取测试,我们将上传一些 pdf 和文本文件。
2. 登录 Kibana 并导航至 Search-> Content -> Connectors。搜索 S3 连接器。为连接器提供一个名称,我们将其命名为 aws-s3-data-connector:
如果未检测到企业搜索节点,连接器将显示一条警告消息,类似于以下内容:
登录 Elastic Cloud Console 并编辑你的部署。在企业搜索下,选择节点大小和区域并保存:
你可以提供不同的索引名称或与连接器名称相同的名称。我们使用相同的索引名称:
提供 elastic-s3-native-connector 的 AWS 凭证和存储桶详细信息:
更新配置时,如果在更新 AWS 凭证和存储桶名称时出现延迟,连接器可能会显示验证错误。你可以提供所需信息并忽略错误横幅。这是众所周知的事情,因为连接器与 Kibana 异步通信,并且对于任何配置更新,连接器和 Kibana 之间的通信都会出现延迟。一旦同步开始或刷新开始一段时间后,错误就会消失:
3. 配置成功后,单击 “Sync” 按钮执行初始完整内容同步。
对于定期同步,请在“计划”选项卡下配置同步频率。默认情况下,此功能处于禁用状态,因此你需要切换 “Enable” 按钮以启用它。计划完成后,连接器将在配置的时间运行并从 S3 存储桶中提取所有内容。Elastic Native Connector 只能同步 10MB 及以下的文件。任何超过 10MB 的文件都将被忽略,不会同步。你必须相应地对文件进行分块,或者使用自管理连接器来自定义行为:
搜索
一旦数据被提取,你可以直接从 “Documents” 选项卡下的连接器进行验证:
此外,Elasticsearch 还提供搜索应用程序(Search applications)功能,使用户能够构建搜索驱动的应用程序。你可以根据 Elasticsearch 索引创建搜索应用程序,使用搜索模板构建查询,并直接在 Kibana 搜索 UI 中轻松预览结果。
Playground
Elastic 提供 Playground 功能,使用 LLM 实现基于检索增强生成 (Retrieval Augmented Generation - RAG) 的问答,以增强对所摄取数据的搜索体验。
在我们的案例中,一旦从 S3 摄取数据,你就可以配置 Playground 并使用其聊天界面,该界面会接受你的问题,从你的 Elasticsearch 文档中检索最相关的结果,并将这些文档传递给 LLM 以生成定制的响应。
查看 Han Xiang Choong 的这篇精彩博客文章,其中展示了使用 S3 数据摄取的 Playground 功能。
结论
在此博客系列中,我们已经看到了 Elasticsearch 提供的 3 种不同选项,用于将 AWS S3 中的数据同步和提取到 Elasticsearch 部署中。根据用例和要求,客户可以选择最适合自己的选项,并通过 Elastic Serverless Forwarder、Elastic Agent 或 S3 Connector 提取数据。
你可以使用来自任何来源的数据构建搜索。查看此网络研讨会,了解 Elasticsearch 支持的不同连接器和来源。
准备好自己尝试一下了吗?开始免费试用。
原文:How to ingest data from AWS S3 into Elastic Cloud - Part 3: Elastic S3 Connector - Search Labs