Elastic Cloud 是 Elastic 提供的基于云的托管服务。Elastic Cloud 允许客户在 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure 上部署、管理和扩展其 Elasticsearch 集群。
MongoDB 是一款流行的 NoSQL 文档型数据库,它以类似 JSON 的文档形式存储数据。
以下是关于如何使用 Elastic MongoDB 连接器 将数据从 MongoDB 数据库导入和同步到 Elasticsearch 的分步指南。
为什么选择 Elastic
Elasticsearch 是一款业界领先的可扩展数据存储和向量数据库,它允许您快速、近乎实时地存储、搜索和分析海量数据。
Elastic 提供了丰富的 生成式 AI 体验,包括大型语言模型 (LLM)、广泛的机器学习功能、向量搜索和无与伦比的开箱即用的语义搜索功能,MongoDB 客户可以使用这些功能在其业务数据上获得卓越的搜索体验。
实现
在本博客中,我们将使用 MongoDB Atlas 并使用 Elastic MongoDB 原生连接器 将数据导入和同步到 Elastic Cloud。该连接器也可以与本地 MongoDB 版本一起使用,并且与 MongoDB 3.6 及更高版本 兼容。
数据流
MongoDB 设置
- 如果您没有现有的设置,请 创建一个帐户 并 部署 Atlas 集群。我们将使用免费层进行数据同步。
- 在 Elastic Cloud 中运行的 Elastic 连接器必须能够访问 MongoDB Atlas 集群才能获取数据。Elastic 提供 静态 IP 地址,客户可以使用 出站 IP 范围 来限制对 MongoDB 集群的访问。
您可以在 MongoDB **Atlas -> 安全 -> 网络访问** 下配置 IP 范围。
如果连接器无法访问 MongoDB,则会出现类似以下的错误。
注意:连接器可以与 Elastic 流量过滤器 设置共存。连接器是从 Elastic Cloud 到数据源的出站连接,而流量过滤器(单向)是从云提供商网络到 Elastic Cloud 的出站连接。
- 创建一个 数据库用户。配置连接器需要用户名和密码。具有访问数据库和集合权限的只读用户就足够了。为了测试,我使用了默认角色。
- 加载示例数据(在 MongoDB Atlas 中默认可用)以创建数据库,或使用您现有的数据库和集合,以便稍后在连接器配置中使用。
单击“浏览集合”以验证数据。设置连接器需要数据库名称和集合信息。
- 获取 MongoDB Atlas 主机信息,这对于配置连接器是必需的。
在“概述”页面上,单击“连接”。
选择 Shell 作为连接方法。
复制连接字符串。主机名将如下所示:_mongodb+srv://cluster0.xxxxxxx.mongodb.net
Elastic Cloud 设置
- 创建一个 Elastic Cloud 帐户 和 部署(如果您已经有一个,您可以跳过此步骤)。
- 登录 Kibana 并转到搜索 -> 内容 -> 索引 -> 创建新的索引。
选择“连接器”作为数据导入方法。
搜索 MongoDB 连接器。有很多 原生连接器 可用。
在“创建 Elasticsearch 索引”下为您的索引命名。索引名称将以 search- 为前缀。
在“配置”选项卡下,提供在 MongoDB Atlas 设置期间捕获的详细信息。
- 在服务器主机名中输入 MongoDB Atlas 主机名。
- 数据库用户名和密码。
- 要从中同步数据的数据库和集合名称。
注意:您一次只能指定一个数据库和一个集合。
设置成功后,您将看到下面的状态消息。
注意:v8.12.0 版本中存在一个 错误,其中必须启用 SSL/TLS 连接,否则同步将失败。
数据同步
配置成功后,单击“同步”按钮执行初始完整内容同步。对于定期同步,请在“调度”选项卡下配置同步频率。默认情况下它处于禁用状态,因此您需要切换“启用”按钮才能启用它。调度完成后,连接器将在配置的时间运行,并从 MongoDB 数据库和指定的集合中提取所有内容。
同步规则
使用 同步规则 和 摄取管道 来自定义特定索引的同步 行为。每次同步都是完整同步,对于每个文档,连接器都会将每个 MongoDB 字段转换为 Elasticsearch 字段。
注意:大于 10MB 的文件不会被导入,并且在 MongoDB 级别设置的文件权限不会按原样同步到 Elastic 部署。
搜索
您可以直接从连接器的“文档”选项卡中验证从 MongoDB 导入到 Elastic Cloud 的数据。
或者,您可以轻松创建 搜索应用程序,它们提供许多搜索选项。
监控
除了将数据从 MongoDB 导入和搜索到 Elasticsearch 之外,您还可以使用 Elastic MongoDB 集成(与连接器不同)来导入日志和指标并监控 MongoDB 集群。
注意 1:对于数据同步,我们使用了 MongoDB Atlas 免费层,但是对于指标和日志导入,免费层和共享层有一些 限制。集成使用的 指标命令 在免费/共享层不受支持,并且无法导出日志。为了演示该功能,使用了 MongoDB Atlas 付费层进行监控。
注意 2:用于收集指标和日志的用户应该具有 `clusterMonitor` 角色才能运行特权命令。
指标
为了从MongoDB Atlas集群摄取指标,我们将使用Elastic MongoDB集成。高级用法是使用Elastic Cloud中默认提供的Fleet服务器,并在主机上安装代理(需要访问MongoDB集群,在Atlas网络访问中添加主机IP)。MongoDB集成在代理上配置和部署,该代理在MongoDB服务器上运行指标命令以将数据摄取到Elasticsearch中。
Elastic集成附带资源,包括默认仪表板、映射等。
对于配置,需要以下格式的Atlas主机信息:mongodb+srv://user:pass@host
从“连接”到MongoDB数据库复制主机信息。
Elastic集成配置
指标仪表板
日志
如果您使用的是自管理的MongoDB版本,则可以使用MongoDB集成来摄取上述指标之外的日志。但是,对于作为托管服务的MongoDB Atlas,日志路径不会公开,因此您无法直接使用该集成。
MongoDB Atlas提供了一个将日志推送到AWS S3存储桶的选项(免费层不可用)。然后,Elastic AWS自定义日志集成可以从S3存储桶中提取MongoDB日志。
MongoDB配置
注意:请按照MongoDB控制台上的提示启用将日志导出到S3。
Elastic配置
我们将在现有的Fleet和代理设置中使用自定义AWS日志集成,该设置已具有MongoDB集成。
AWS集成需要凭据和权限才能访问AWS资源。有多种凭据方法,在本博文中,我们使用了访问密钥ID/秘密访问密钥。
AWS高级步骤
注意:确保SQS访问策略正确,并且SQS可以从S3存储桶读取。
在自定义AWS日志集成中启用“从S3存储桶收集日志”,并提供配置为获取MongoDB日志的AWS S3存储桶ARN或SQS队列URL。建议使用SQS方法,因为轮询所有S3对象成本很高,集成可以从SQS队列中读取的S3通知事件指向的S3对象中检索日志。
部署后,集成将开始从存储桶读取日志并将其摄取到Elasticsearch中。由于这是用于自定义日志的集成,因此可能需要额外的字段映射。
在Kibana -> Discover中验证日志的数据视图:logs-*
检查字段:aws.s3.bucket.arn
或 aws.s3.bucket.name
或 log.file.path
以确认日志仅来自已配置的s3存储桶。
扩展
当前,Elastic MongoDB连接器一次允许配置1个数据库和1个集合。通常,大型MongoDB部署将具有多个数据库和集合。连接器支持分别配置数据库和集合的多个实例,并允许您从不同的数据库和集合中摄取数据。尽管您每次都需要创建不同的索引,但您可以使用类似的命名约定并为通用搜索创建数据视图。
您可以在这里看到拥有多个集合实例的情况。
注意:连接器在企业搜索实例上运行,务必监控其使用情况并根据负载进行扩展。
兼容MongoDB的数据库
Elastic MongoDB连接器与兼容MongoDB API和驱动程序的数据库兼容并可与之配合使用。例如,您可以类似地使用连接器从Amazon DocumentDB和Azure CosmosDB摄取数据。
结论
Elastic MongoDB连接器提供了一种将MongoDB数据同步到Elasticsearch部署的简单方法。实施连接器并利用Elastic的行业领先搜索体验相对容易。在我们的文档中了解有关连接器的更多信息。
Elasticsearch 充满了新的功能,可以帮助您为您的用例构建最佳搜索解决方案。深入研究我们的示例笔记本以了解更多信息,开始免费云试用,或立即在您的本地机器上试用Elastic。
想获得Elastic认证?找出下次Elasticsearch工程师培训何时举行!