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

news2024/11/29 0:36:31

作者: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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(vue)el-select选择框加全选/清空/反选

(vue)el-select选择框加全选/清空/反选 <el-form-item label"批次"><el-selectv-model"formInline.processBatch"multiplecollapse-tagsfilterableplaceholder"请选择"style"width: 250px"no-data-text"请先选择企业、日…

React - 高级用法

React高级用法 Hooks Reducer useReducer&#xff1a; import React, { useReducer, useState } from react;const initialState { count: 0 };function reducer(state, action) {switch (action.type) {case increment:return { count: state.count 1 }case decrement:re…

获取公募基金持仓【数据分析系列博文】

摘要 从指定网址获取公募基金持仓数据&#xff0c;快速解析并存储数据。 &#xff08;该博文针对自由学习者获取数据&#xff1b;而在投顾、基金、证券等公司&#xff0c;通常有Wind、聚源、通联等厂商采购的数据&#xff09; 1. 导入必要的库&#xff1a; pandas 用于数据处理…

「Qt Widget中文示例指南」如何实现行编辑功能

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 Line Edits&#xf…

后端插入数据库问题

IDEA报错&#xff1a;Error updating database. Cause: java.sql.SQLException: Column count doesn’t match value count at row 1 1、看报错消息&#xff0c;SQLException&#xff0c;定位到SQL语句问题 并且看best guess最好猜测&#xff0c;再去找路径下的ShoppingCartMa…

React-基础语法学习

1、教程&#xff1a;井字棋游戏 本教程将引导你逐步实现一个简单的井字棋游戏&#xff0c;并且不需要你对 React 有任何了解。在此过程中你会学习到一些编写 React 程序的基本知识&#xff0c;完全理解它们可以让你对 React 有比较深入的理解。 1.1、教程分成以下几个部分&am…

Hudi-IDEA编程

项目 一、HudiSparkKafka&#xff08;Scala&#xff09; 配置详见【1.Scala配置】 依赖详见【1.HudiSparkKafka依赖】 1-1 构建SparkSession对象 def main(args: Array[String]): Unit {//1.构建SparkSession对象val spark: SparkSession SparkUtils.createSparkSession(…

社交媒体数据恢复:YY语音

YY语音数据恢复指南 在我们的日常生活中&#xff0c;数据丢失是一种常见的现象。有时候&#xff0c;我们可能会不小心删除了重要的文件&#xff0c;或者因为硬件故障而导致数据丢失。在这种情况下&#xff0c;数据恢复软件可以帮助我们找回丢失的数据。本文将重点介绍如何使用Y…

手机拍照技术

拍照技巧 说明: 本文将主要介绍摄影和手机常见技巧&#xff1b; 1. 摄影的基本知识 **说明&#xff1a;**关于摄影&#xff0c;手机和相机的原理都是相同的&#xff0c;不同的是相机在很多方面优于手机&#xff0c;但是专业的设备对于我们这种的非专业的人来说&#xff0c;刚…

MAC上如何将某个目录制作成iso格式磁盘文件,iso文件本质是什么?以及挂载到ParallelDesktop中?(hdiutil makehybrid )

背景 ParallelsDesktop没有安装ParallelsTools的无法共享目录&#xff0c;可以通过ParallelsDesktop提供CD磁盘的方式共享进去 命令 # 准备文档 mkdir mytestdir cp xxx mytestdir# 生成iso hdiutil makehybrid -o output.iso mytestdir -iso -joliethdiutil是MAC提供的磁盘…

linux 修改 root 密码

1、先重启 2、看到下面的界面&#xff0c;按上下箭头&#xff0c;然后按 e 键。 3、进入该界面&#xff0c;按界面步骤操作 4、按ctrlx&#xff0c;进入到下面的界面&#xff0c;依次输入下面的指令即可 mount -o remount,rw /sysroot #让sysroot 能读写chroot /sysroot #切换到…

校园综合服务平台V3.9.2 源码修复大部分已知BUG

校园综合服务平台&#xff0c;版本更新至V3.9.1 &#xff0c;源码功能强大&#xff0c;ui 精美&#xff0c; 功能包含但不限于校园跑腿&#xff0c;外卖&#xff0c;组局&#xff0c;圈子&#xff0c;商城&#xff0c;抽奖&#xff0c;投票&#xff0c;团购&#xff0c;二手市场…

Python中2种常用数据可视化库:Bokeh和Altair

本文分享自华为云社区《探究数据可视化&#xff1a;Bokeh vs. Altair》&#xff0c;作者&#xff1a;柠檬味拥抱。 在数据科学和数据分析领域&#xff0c;数据可视化是一种强大的工具&#xff0c;可以帮助我们更好地理解数据、发现模式和趋势。Python作为一种流行的数据科学工…

【QT进阶】Qt Web混合编程之QWebEngineView基本用法

往期回顾 【QT入门】Qt自定义控件与样式设计之自定义QTabWidget实现tab在左&#xff0c;文本水平的效果-CSDN博客【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用-CSDN博客 【QT进阶】Qt Web混合编程之QWebEngi…

(十四)C++自制植物大战僵尸游戏windows平台视频播放实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs VLC库 在Cocos2d-x游戏开发框架中&#xff0c;没有实现windows平台视频播放的功能&#xff0c;需要自定义实现。在本项目中使用vlc库实现windows平台的视频播放功能。 vlc官网&#xff1a;网址 下载完成后&#x…

.net反射(Reflection)

文章目录 一.概念&#xff1a;二.反射的作用&#xff1a;三.代码案例&#xff1a;四.运行结果&#xff1a; 一.概念&#xff1a; .NET 反射&#xff08;Reflection&#xff09;是指在运行时动态地检查、访问和修改程序集中的类型、成员和对象的能力。通过反射&#xff0c;你可…

分布式搭载博客网站

一.运行环境&#xff1a; IP主机名系统服务192.168.118.128Server-WebLinuxWeb192.168.118.131Server-NFS-DNSLinuxNFS/DNS 二.基础配置 1. 配置主机名&#xff0c;hosts映射 [rootserver ~]# hostnamectl set-hostname Server-Web [rootserver ~]# hostname Server-Web [r…

每日算法4/17

1552. 两球之间的磁力 题目 在代号为 C-137 的地球上&#xff0c;Rick 发现如果他将两个球放在他新发明的篮子里&#xff0c;它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子&#xff0c;第 i 个篮子的位置在 position[i] &#xff0c;Morty 想把 m 个球放到这些篮子里&…

目标检测——行人交通信号灯数据集

一、重要性及意义 行人交通信号灯检测的重要性及意义主要体现在以下几个方面&#xff1a; 首先&#xff0c;行人交通信号灯检测对于提高道路安全性至关重要。通过准确识别交通信号灯的状态&#xff0c;行人可以更加清晰地了解何时可以安全地过马路&#xff0c;从而避免与车辆…

《ElementPlus 与 ElementUI 差异集合》el-popconfirm 气泡确认框之插槽写法有差异

ElementUI 直接在 el-button 上配置属性 slot&#xff1b; <el-popconfirm title"确定删除吗&#xff1f;请谨慎操作&#xff01;" confirm"delete"><el-button slot"reference" size"small" type"danger">删…