Elasticsearch:如何将 MongoDB 数据引入 Elastic Cloud

作者:Hemendra Singh Lodhi

Elastic Cloud 是由 Elastic 提供的基于云的托管服务。Elastic Cloud 允许客户在亚马逊网络服务 (AWS)、谷歌云平台 (GCP) 和微软 Azure 上部署、管理和扩展他们的 Elasticsearch 集群。

MongoDB 是一种流行的 NoSQL 文档导向数据库,它以类似 JSON 的文档形式存储数据。

以下是使用 Elastic MongoDB 连接器将数据从 MongoDB 数据库导入并同步到 Elasticsearch 的逐步指南。

为什么选择 Elastic?

Elasticsearch 是业界领先的搜索和分析引擎,它允许你快速且几乎实时地存储、搜索和分析大量数据。

Elastic 提供丰富的生成式人工智能体验,具有大型语言模型(LLMs)、广泛的机器学习能力、向量搜索以及无与伦比的开箱即用的语义搜索能力,MongoDB 的客户可以利用这些功能,在他们的商业数据上获得卓越的搜索体验。

实施

在这篇博客中,我们将使用 MongoDB Atlas,并使用 Elastic MongoDB 原生连接器将数据导入和同步到 Elastic Cloud。该连接器也可以与本地部署的 MongoDB 版本一起使用,兼容 MongoDB 3.6 及更高版本。

数据流

MongoDB 设置

1)如果你没有现有的设置,则创建一个账户并部署 Atlas 集群。我们将使用免费套餐进行数据同步。

2)在 Elastic Cloud 中运行的 Elastic 连接器必须可以访问 MongoDB Atlas 集群以获取数据。Elastic 提供静态 IP 地址,客户可以使用 engress IP 范围来限制对其 MongoDB 集群的访问。

你可以在 MongoDB Atlas -> Security -> Network Access 下配置 IP 范围。

如果连接器无法访问 MongoDB,则会出现类似以下的错误:

注意:连接器可以与 Elastic Traffic Filter 设置共存。连接器是从 Elastic Cloud 到数据源的出站连接,而流量过滤器(单向的)是从云提供商网络到 Elastic Cloud 的出站连接。

3)创建数据库用户。配置连接器时将需要用户 ID 和密码。拥有访问数据库和集合权限的只读用户就足够了。在测试中,我使用了默认角色。

4)加载示例数据(在 MongoDB Atlas 中默认可用)以创建一个数据库,或者使用你现有的数据库和集合,以便稍后在连接器配置中使用。

点击“Browse Collections 浏览集合”来验证数据。设置连接器时将需要数据库名称和集合信息。

5)获取 MongoDB Atlas 主机信息,这是配置连接器所需的信息。

从 Overview 概览页面,点击 Connnect:

选择 Shell 作为连接方法:

复制连接字符串。主机名看起来会像这样:

_mongodb+srv://cluster0.xxxxxxx.mongodb.net

Elastic Cloud 设置

创建一个 Elastic Cloud 账户和部署(如果你已经有一个,可以跳过此步骤)。

登录到 Kibana,然后转到 Search -> Content -> Indices -> Create a new index.

选择 "Connector" 作为摄取方法。

搜索 MongoDB 连接器。 有许多可用的原生连接器。

在 “Create an Elasticsearch index” 下为你的索引命名。 索引名称将以 search-  为前缀

在 “Configuration” 选项卡下,提供在 MongoDB Atlas 设置期间捕获的详细信息。

  • 在“服务器主机名”中输入 MongoDB Atlas 主机名
  • 输入数据库用户名和密码
  • 要同步数据的数据库和 collection 名称

注意:一次只能指定一个数据库和集合。

设置成功后,你将看到下面的状态消息。

注意:在 v8.12.0 中存在一个 bug,必须启用 SSL/TLS 连接,否则同步将失败。

数据同步

配置成功完成后,单击 “Sync” 按钮以执行初始完整内容同步。 对于定期同步,请在 “Scheduling” 选项卡下配置同步频率。 默认情况下它处于禁用状态,因此你需要切换 “Enable” 按钮才能启用它。 调度完成后,连接器将在配置的时间运行并从 MongoDB 数据库和指定集合中提取所有内容。

同步规则

使用同步规则和 ingest pipelines 来自定义特定索引的同步 behavior。每次同步都是全量同步,对于每个文档,连接器会将每个 MongoDB 字段转换为一个 Elasticsearch 字段。

注意:大于 10MB 的文件将不会被摄取,且在 MongoDB 级别设置的文件权限不会原样同步到 Elastic 部署中。

搜索

你可以直接从 “Documents” 选项卡下的连接器验证从 MongoDB 引入到 Elastic Cloud 的数据。

或者你可以轻松地创建 Search applications,提供许多搜索选项。

监控

除了从 MongoDB 将数据摄取和搜索到 Elasticsearch 外,你还可以使用 Elastic MongoDB 集成(与连接器不同)来摄取日志和指标,并监控 MongoDB 集群。

注意 1:对于数据同步,我们使用了 MongoDB Atlas 的免费套餐,但免费和共享套餐存在一些限制,不能用于指标和日志摄取。集成所使用的指标命令在免费/共享套餐上不受支持,也无法导出日志。为了演示该功能,使用了 MongoDB Atlas 的付费套餐来进行监控。

注意 2:用于收集指标和日志的用户应具有 clusterMonitor 角色以运行特权命令。

指标

为了从 MongoDB Atlas 集群摄取指标,我们将使用 Elastic MongoDB 集成。在高层次上,使用 Elastic Cloud 中默认可用的 fleet server,并在主机上安装代理(需要访问 MongoDB 集群,在 Atlas 网络访问中添加主机 IP)。MongoDB 集成被配置并部署在代理上,代理在 MongoDB 服务器上运行指标命令,将数据摄取到 Elasticsearch 中。

Elastic 集成提供了资产,包括默认的仪表板、映射等。

对于配置,需要以以下格式提供 Atlas 主机信息:mongodb+srv://user:pass@host

从 “Connect” 中复制主机信息到 MongoDB 数据库。

Elastic 集成配置:

Metrics 仪表盘:

日志

如果你正在使用自管理的 MongoDB 版本,则可以使用 MongoDB 集成来摄取日志,除了上面提到的指标。但是对于 MongoDB Atlas,它是一个托管服务,日志路径是不可见的,因此你不能直接使用集成。

MongoDB Atlas 提供了一个选项,可以将日志推送到 AWS S3 存储桶(在免费套餐中不可用)。然后 Elastic AWS 自定义日志集成可以从 S3 存储桶中拉取 MongoDB 的日志。

MongoDB 配置:

注意:按照 MongoDB 控制台上的提示启用日志导出到 S3 的功能。

Elastic 配置

我们将在已经安装了 MongoDB 集成的现有 fleet 和 agent设置中使用自定义 AWS 日志集成。

AWS 集成需要凭证和权限才能访问 AWS 资源。有多种凭证方法,对于本博客,我们使用了访问密钥 ID/私有访问密钥。

AWS 总体步骤:

  1. 创建 S3 存储桶

  2. 创建 SQS 队列并更新访问策略

  3. 在 S3 存储桶中启用事件通知,使用创建的 SQS 队列

注意:确保 SQS 访问策略正确,并且 SQS 可以从 S3 存储桶读取数据。

在自定义 AWS 日志集成中开启 “Collect Logs from S3 Bucket” 的选项,并提供配置为获取 MongoDB 日志的 AWS S3 存储桶 ARN 或 SQS 队列 URL。推荐使用 SQS 方法,因为轮询所有 S3 对象的成本较高,相反,集成可以从 S3 通知事件指向的 S3 对象中检索日志,这些通知事件从 SQS 队列读取。

部署完成后,集成将开始从存储桶读取日志并导入到 Elasticsearch 中。由于这是针对自定义日志的集成,可能需要进行额外的字段映射。

在 Kibana 中验证日志 -> 在 “Discover” 中查看数据视图:logs-*

检查字段:aws.s3.bucket.arn、aws.s3.bucket.name 或 log.file.path,以确认日志是否来自已配置的 S3 存储桶。

扩展

目前,Elastic MongoDB 连接器一次只允许配置一个数据库和一个集合。通常,一个大型的 MongoDB 部署会有多个数据库和集合。连接器支持对多个数据库和集合的不同实例进行单独配置,并允许你从不同的数据库和集合中摄取数据。虽然每次都需要创建不同的索引,但你可以采用类似的命名约定,并为常见的搜索创建一个数据视图。

你可以在这里看到具有多个集合实例的情况:

注意:连接器运行在企业搜索实例上,重要的是根据负载监控其使用情况并进行扩展。

MongoDB 兼容数据库

Elastic MongoDB 连接器兼容并可与支持 MongoDB API 和驱动程序的数据库一起工作。例如,你也可以用类似的方式使用连接器从 Amazon DocumentDB 和 Azure CosmosDB 摄取数据。

结论

Elastic MongoDB 连接器提供了一种将 MongoDB 数据同步到 Elasticsearch 部署的简单方法。实现连接器并利用 Elastic 提供的行业领先的搜索体验相对容易。在我们的文档中了解更多关于连接器的信息。

准备在你的应用中构建 RAG 吗?想尝试不同的 LLM 与向量数据库吗? 请查看我们在 Github 上的 LangChain、Cohere 等样本笔记本,并加入即将开始的 Elasticsearch 工程师培训!

原文:MongoDB & Elasticsearch: Ingest MongoDB data into Elastic Cloud — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/552929.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA最好用插件推荐

1 背景 俗话说:“工欲善其事必先利其器”,本问介绍几款强大实用的 IDEA 插件,助力大家开发。 希望大家做一个聪明又努力的人,而不只是一个努力的人。 以下插件大都可以通过 IDEA 自带的插件管理中心安装,如果搜不到可以…

算法|最大堆、最小堆和堆排序的实现(JavaScript)

一些概念 堆&#xff1a;特殊的完全二叉树&#xff0c;具有特定性质的完全二叉树。大根堆&#xff1a;父节点 > 子节点小根堆&#xff1a;父节点 < 子节点 二叉堆也属于完全二叉树&#xff0c;所以可以用数组表示。 若下标从1开始&#xff0c;左节点为 2*i &#xff0…

类和对象-封装-设计案例1-立方体类

#include<bits/stdc.h> using namespace std; class Cube{public://设置长void setL(int l){m_Ll;} //获取长int getL(){return m_L;}//设置宽 void setW(int w){m_Ww;}//获取宽 int getW(){return m_W;}//设置高 void setH(int h){m_Hh;}//获取高int getH(){return m_H;…

【机器学习300问】72、神经网络的隐藏层数量和各层神经元节点数如何影响模型的表现?

评估深度学习的模型的性能依旧可以用偏差和方差来衡量。它们反映了模型在预测过程中与理想情况的偏离程度&#xff0c;以及模型对数据扰动的敏感性。我们简单回顾一下什么是模型的偏差和方差&#xff1f; 一、深度学习模型的偏差和方差 偏差&#xff1a;衡量模型预测结果的期望…

JAVAEE—UDP协议TCP协议/三次握手四次挥手

文章目录 UDP协议UDP协议的段格式UDP的传输过程校验和无连接 TCP协议TCP报文的格式段有连接可靠性确认应答超时重传如果ACK丢了呢&#xff1f; 序号和确认序号 连接的构建和断开连接的构建&#xff08;三次握手&#xff09;三次握手的作用为什么握手是三次&#xff0c;而不是四…

微信小程序的常用API ①

前言&#xff1a;什么是微信小程序的API&#xff1f; &#xff08;1&#xff09;微信小程序的API是由宿主环境提供的。通俗来说API是一种接口函数&#xff0c;把函数封装起来给开发者使用&#xff0c;这样好多功能都无需开发者去实现&#xff0c;直接调用即可。 &#xff08;…

工业电脑在ESOP工作站行业应用

ESOP工作站行业应用 项目背景 E-SOP是实现作业指导书电子化&#xff0c;并统一管理和集中控制的一套管理信息平台。信迈科技的ESOP终端是一款体积小巧功能齐全的高性价比工业电脑&#xff0c;上层通过网络与MES系统连接&#xff0c;下层连接显示器展示作业指导书。ESOP控制终…

Covalent Network(CQT)宣布推出面向 Cronos 生态的捐赠计划与 API 积分,为 Web3 创新赋能

为了促进 Web3 领域的创新&#xff0c;Covalent Network&#xff08;CQT&#xff09;宣布将其捐赠计划向 Cronos 生态系统中的开发者拓展。这一战略性举措&#xff0c;旨在通过向 Cronos 网络中基于 Covalent Network&#xff08;CQT&#xff09;API 构建的项目提供支持和资源&…

OpenHarmony实战开发-如何使用Navigation实现多设备适配。

介绍 在应用开发时&#xff0c;一个应用需要适配多终端的设备&#xff0c;使用Navigation的mode属性来实现一套代码&#xff0c;多终端适配。 效果图预览 使用说明 将程序运行在折叠屏手机或者平板上观看适配效果。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a…

高版本Android studio 使用Markdown无法预览(已解决)

目录 概述 解决方法 概述 本人升级Android studio 当前版本为Android Studio Jellyfish | 2023.3.1 RC 2导致Markdown无法预览。 我尝试了很多网上的方法都无法Markdown解决预览问题&#xff0c;包括升级插件、安装各种和Markdown相关的插件及使用“Choose Boot Java Runtim…

Linux 操作系统编译器、静态库、动态库

1、编辑器 1.1、vim的安装 指令&#xff1a;sudo apt-get install vim 1.2 vim的使用 格式&#xff1a;vim 文件名 如果文件存在&#xff0c;只打开&#xff0c;文件不存在&#xff0c;创建并打开 vim的4中模式&#xff1a; 命令模式&#xff0c;插入模式&#xff0c;地行模…

springboot Logback 不同环境,配置不同的日志输出路径

1.背景&#xff1a; mac 笔记本开发&#xff0c;日志文件写到/data/logs/下&#xff0c;控制台报出&#xff1a;Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data&#xff0c;报Read-only file system 2.修改logback-spri…

Hbase的shell命令(详细)

一、help 1.help 显示命名的分组情况 2.help 命令名称 查看命令的具体使用&#xff0c;包括命令的作用和用法。 举例&#xff1a;help list 二、general 组&#xff08;普通命令组&#xff09; 命令 描述 …

Redux极客园项目初始化搭建

基本结构搭建 实现步骤 在 Login/index.js 中创建登录页面基本结构在 Login 目录中创建 index.scss 文件&#xff0c;指定组件样式将 logo.png 和 login.png 拷贝到 assets 目录中 代码实现 pages/Login/index.js import ./index.scss import { Card, Form, Input, Button }…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新&#xff08;正式比赛&#xff09; 往期链接&#xff1a; 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程&#xff08;…

安防视频监控/视频集中存储EasyCVR平台级联时,下级平台未发流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

PPTist在线编辑、播放幻灯片

PPTist简介 “一个基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;支持 文字、图片、形状、线条、图表、表格、视频、音频、公式 几种最常用的元素类型&#xff0c;每一种元素都拥…

免费申请泛域名证书

通配符证书是一种比较特殊的SSL/TLS 证书&#xff0c;可用于保护多个域名&#xff08;含主域名&#xff09;&#xff0c;由域名字段中的通配符 (*) 指示。这种证书主要用于具有很多子域的组织。通配符证书对主域及其所有次级子域有效。 对于免费通配符证书而言&#xff0c;目前…

【C++杂货铺】继承

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 继承的概念和定义 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 基类和派生类对象赋值转换 &#x1f4c1; 继承中的作用域 &#x1f4c1; 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…

ppt技巧:​如何将两个PPT幻灯片文件合并成一个?

第一种方式&#xff1a;复制粘贴幻灯片 1. 打开第一个PPT幻灯片文件&#xff0c;确保你已经熟悉该文件的内容和布局。 2. 打开第二个PPT幻灯片文件&#xff0c;浏览其中的所有幻灯片&#xff0c;选择你想要合并到第一个文件中的幻灯片。 3. 使用快捷键CtrlC&#xff08;Wind…