当前位置: 首页 > news >正文

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

  • 1.历史发展
  • 2.OpenSearch 与 Elasticsearch 相同点
  • 3.OpenSearch 与 Elasticsearch 不同点
    • 3.1 版本大不同
    • 3.2 许可证不同
    • 3.3 社区不同
    • 3.4 功能不同
    • 3.5 安全性不同
    • 3.6 性能不同
    • 3.7 价格不同
    • 3.8 两者可相互导入
  • 4.总结

1.历史发展

在 2010 年以 Apache 2.0 2.0 2.0 开源协议发布后,Elasticsearch 迅速成为全球最受欢迎的企业 搜索引擎

Elasticsearch 常与 LogstashKibana 一起部署,这一组合被称为 Elasitc Stack,用于启用日志分析用例,包括应用可观察性、安全日志分析和理解用户行为。

2015 年,亚马逊利用这一开源协议推出了 Amazon Elasticsearch ServiceAmazon ES),这是一个云托管服务,允许 AWS 客户启动可伸缩的 Elasticsearch 集群,连接数据源到集群端点,并在云中加载、处理、分析或可视化数据。

然而,Elastic 公司最终对亚马逊使用其产品和商标提出了反对,并在 2019 年因涉嫌商标侵权和虚假广告对这家科技巨头提起诉讼。

在这里插入图片描述

🚀《Elastic 与 Amazon 就商标侵权诉讼达成协议》

Elastic 和亚马逊在 2021 年解决了这一诉讼,带来了两个重要的发展:

  • 2021 年 1 月,Elastic 公司宣布,从 7.11 版本开始,Elasticsearch 将根据 Server Side Public LicenseSSPL)和 Elastic 许可证进行授权。这一变化阻止了亚马逊和其他公司在未与 Elastic 直接合作的情况下提供 Elasticsearch 服务。
  • 2021 年 4 月,亚马逊宣布,它将从 Elasticsearch 的最后一个开源版本(7.10.2)分支,推出一个新的开源搜索引擎项目。由于 Elasticsearch 名称不能再使用,新项目被命名为 OpenSearch。亚马逊还将 OpenSearch 作为云服务提供,名为 Amazon OpenSearch Service

🚀 OpenSearch 官网:https://opensearch.org/

这里提醒一句,阿里云早期的搜索引擎也叫 OpenSearch。巧合的是,阿里云开放搜索服务也叫 OpenSearch,其地址参见:https://developer.aliyun.com/article/67156。

阿里云 OpenSearch(开放搜索服务)是阿里云推出的一套自助式、可定制的云搜索服务,初衷是将阿里巴巴积累近 10 年的搜索引擎技术平台化、服务化,并开放给广大开发者,降低实现专业搜索产品的门槛,让开发者以较低的成本轻松拥有跟淘宝、天猫等应用的搜索工具类似的专业搜索产品。

本文介绍的是 Elasticserach 分支出来的 Opensearch,并非阿里云的 OpenSearch,特此说明。

在接下来的部分中,我们将更深入地探讨这两种搜索解决方案在过去近 3 年中如何发展分化,以及哪一个更适合你的 AWS 日志分析或企业搜索应用。

如下相同点和不同点主要来自:Elastic 官网、OpenSearch 官网及相关博客。

  • 🚀 https://www.elastic.co/cn/amazon-opensearch-service
  • 🚀 https://www.elastic.co/cn/elasticsearch/opensearch

2.OpenSearch 与 Elasticsearch 相同点

OpenSearch 是从 Elasticsearch 的一个相对高级的分支版本开发而来的,所以两个应用在搜索、分析和仪表盘的所有基本功能上都是相同的。

在这里插入图片描述
OpenSearch 和 Elasticsearch 都提供了 多租户架构全文搜索分布式搜索 能力的分析引擎。

因此,两者都可以用来满足 网站搜索企业搜索日志分析 的用例。

3.OpenSearch 与 Elasticsearch 不同点

在比较 OpenSearch 和 Elasticsearch 时,主要有以下几点不同:

  • 版本
  • 许可证
  • 社区
  • 功能
  • 安全性
  • 性能
  • 价格

3.1 版本大不同

下图显示了 Elasticsearch 和 OpenSearch 两个搜索引擎解决方案的独立发展路径和发布节奏。

在这里插入图片描述

  • Elasticsearch 经过 1.x2.x5.x6.x7.x8.x 版本更新,最终发展到预计在 2024 年发布的 9.x 版本。
  • OpenSearch 从 1.0 版本开始于 2021 年 7 月发布,然后逐步更新至 2.x 系列,其中 2.6 版本预计将是 2024 年的最后一个 2.x 系列版本,随后计划发布 3.x 系列。

3.2 许可证不同

在 2021 年之前,Elasticsearch 在 Apache 2.0 2.0 2.0 许可证下可供公众使用。这个许可证允许用户出于任何目的使用、分发或修改软件,以及分发修改后的 Elasticsearch 版本而无需支付任何版税。

在与亚马逊的争议之后,Elasticsearch 现在根据 SSPLElastic 许可证 进行授权。这一变化之后,Elasticsearch 不再被视为严格意义开源,因为许可证现在要求任何向第三方提供 Elasticsearch 功能的人必须发布整个源代码和所有第三方运行它所需的 API。

OpenSearch 目前根据 Apache 2.0 许可证 授权。

🚀 简述一下 SSPL 协议和常规开源的不同:SSPL 协议要求如果你提供基于此协议软件的服务,必须公开整个服务的源代码,而常规开源软件不需要。

这时候,大家可能在想,我们在使用 Elasticsearch,并没有公开源代码呀!

是这样的,国内能真正基于开源代码二次开发且商业化用途的代码,除了几个 BAT、字节等大厂外,屈指可数。

通俗说这是针对的类似亚马逊大厂商业化行为的协议!

使用 SSPL 协议的部分开源软件如下:

软件名称使用协议
时间
MongoDBSSPL2018 年 10 月启用 SSPL
GraylogSSPL2020 年 11 月宣布 4.0 及以后的版本将使用 SSPL
Elasticsearch & KibanaSSPL & Elastic 许可证2021 年 1 月 Elastic NV 宣布将来版本将使用 SSPL 和 Elastic 许可证双重授权

3.3 社区不同

OpenSearch 和 Elasticsearch 都拥有健康、活跃和忠诚的社区,因此两个搜索引擎都不太可能在功能供给上落后太远或很快不再受支持。

  • Elasticsearch 社区论文比较成熟,官方论坛地址:https://discuss.elastic.co/。

在这里插入图片描述

  • OpenSearch 官方论坛地址:https://forum.opensearch.org/。

在这里插入图片描述
我看了一下,OpenSearch 论坛问题数和回复数都还没有形成规模。

3.4 功能不同

亚马逊最初分支 Elasticsearch 7.10.2 创建 OpenSearch 时,首先必须删除所有不兼容 Apache 2.0 2.0 2.0 许可证的代码。

在这里插入图片描述

这包括禁用所有收费功能并删除整个 Elastic X-Pack 代码。

功能ElasticsearchOpenSearch
备注
许可证SSPL / Elastic LicenseApache License 2.0OpenSearch 保持了完全的开源许可
安全功能部分为付费功能大部分开源可用OpenSearch 倾向于开源其安全功能
警报和异常检测付费和开源版本开源可用OpenSearch 提供开源的警报和异常检测
SQL 支持OpenSearch 继承了 Open Distro 的 SQL 功能
机器学习支持付费功能开源插件形式提供OpenSearch 社区提供 ML 插件
客户端兼容性完全支持自家产品兼容 Elasticsearch 7.10OpenSearch 保持对旧 Elasticsearch 客户端的兼容
社区支持由 Elastic 公司主导社区驱动OpenSearch 鼓励社区贡献和反馈
插件生态较闭合的生态系统开放插件生态OpenSearch 促进插件的开源发展
跟踪分析付费功能开源可用OpenSearch 提供开源的跟踪分析功能
长期支持版本提供提供OpenSearch 承诺提供长期支持的版本

Elastic GitHub:https://github.com/elastic

在这里插入图片描述

OpenSearch GitHub:https://github.com/opensearch-project

在这里插入图片描述

3.5 安全性不同

Elasticsearch 和 OpenSearch 都配备了许多相同的安全功能。

但是,这些功能都包含在 OpenSearch 中,而某些功能在 Elasticsearch 中只对付费客户可用。

如 OpenSearch 官网介绍:其已缺省(系统默认)安全。

在这里插入图片描述

Elastic 付费功能清单列表:https://www.elastic.co/cn/pricing

在这里插入图片描述

3.6 性能不同

如果你正在进行大规模的搜索操作,你可能会对这两种搜索引擎中哪一个能提供更快查询感兴趣。

Elastic 最近发表了一篇博客,标题为 “Elasticsearch vs. OpenSearch:揭开性能差距”。

🚀 文章地址:https://www.elastic.co/cn/blog/elasticsearch-opensearch-performance-gap

Elastic 官网文档强调:自从 Elasticsearch 的一个早期版本问世以来,OpenSearch 就没有跟上创新的步伐。自 OpenSearch GA 以来,Elasticsearch 在功能创新方面已经超过了 4 4 4 倍。

Elastic 官方对比强调,如下图所示 —— Elasticsearch 在各个关键性能指标上的优势,并且更加节约存储资源。

在这里插入图片描述

  • 文本查询Text Querying):Elasticsearch 在文本查询性能上比 OpenSearch 快 76 % 76\% 76%
  • 排序Sorting):在排序操作中,Elasticsearch 比 OpenSearch 快 58 % 58\% 58%
  • 日期直方图Date Histogram):在进行日期直方图聚合时,Elasticsearch 显示出比 OpenSearch 快 81 % 81\% 81% 的性能。
  • 条款Terms):在处理条款查询时,Elasticsearch 的性能比 OpenSearch 快 61 % 61\% 61%
  • 范围Ranges):在范围查询方面,Elasticsearch 展现出比 OpenSearch 快 42 % 42\% 42% 的性能。
  • Elasticsearch 使用的 存储空间 比 OpenSearch 少 37 % 37\% 37%

这意味着 Elasticsearch 在处理同等任务时,不仅查询速度更快,而且在存储效率上也更优。

如下截图参见博客:https://www.elastic.co/cn/blog/migrating-1-billion-log-lines-opensearch-elasticsearch

在这里插入图片描述
左边是 Opensearch,右边是 Elasticsearch。明显对比可知:Elasticsearch 较 OpenSearch 节省了 23 % 23\% 23% 的存储空间。

3.7 价格不同

Elasticsearch 和 OpenSearch 的自我管理版本可以免费下载,但用户需要使用自己的硬件和计算资源来安装、管理和操作它们。

中小企业国内使用 Elasticsearch 居多,普通的免费基本功能基本够用。

而部分商业化银行等大型企业使用 Elasticsearch 商业化功能的也不在少数。

国内还有新特点就是云厂商和 Elastic 合作紧密,推出的 Elasticsearch 版本。比如:阿里云 Elasticsearch、腾讯云 Elasticsearch 用得也不少。
在这里插入图片描述

在这里插入图片描述

  • 🚀 Elasticsearch 下载地址:https://www.elastic.co/cn/downloads/elasticsearch
  • 🚀 OpenSearch 下载地址:https://opensearch.org/downloads.html
  • 🚀 阿里云 Elasticserach:https://www.aliyun.com/product/bigdata/elasticsearch
  • 🚀 腾讯云 Elasticsearch:https://cloud.tencent.com/product/es

3.8 两者可相互导入

OpenSearch 迁移到 Elasticsearch 参见:

  • 🚀 https://www.elastic.co/cn/blog/migrating-1-billion-log-lines-opensearch-elasticsearch

Elasticsearch 迁移到 OpenSearch 参见:

  • 🚀 https://opensearch.org/docs/latest/upgrade-to/upgrade-to/

4.总结

OpenSearch 已发布 3 年多,Elasticsearch 和 OpenSearch 已存在很多不同,但它们最终都源自同一个版本:Elasticsearch 7.10.2

我们不对 Elasticsearch 和 Amazon OpenSearch 之间的选型提供直接的推荐,因为最合适的选择将取决于项目或产品独特的需求和环境。但,文中数据相信会给你提供参考。

建议读者根据自己的具体情况和偏好做出决定,并考虑功能需求、成本效益、长期的技术支持或自身是否具备架构及性能调优等能力。

相关文章:

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…...

欧拉openEuler 22.03 LTS-部署k8sv1.03.1

1.设置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…...

老年生活照护实训室:为养老服务业输送专业人才

本文探讨了老年生活照护实训室在养老服务业专业人才培养中的关键作用。通过详细阐述实训室的功能、教学实践、对学生能力的培养以及面临的挑战和解决方案,强调了其在提升人才素质、满足行业需求方面的重要性,旨在为养老服务业的可持续发展提供有力的人才…...

go语言中使用WaitGroup和channel实现处理多线程问题

WaitGroup 背景 如果将一个任务分为任意个小任务,并且不关心小任务的执行顺序,并且希望等待全部的小任务执行完成后再去操作后面的逻辑,那我推荐你用sync.WaitGRoup 使用方法 比如,有一个任务需要执行 3 个子任务,…...

Open3D 计算点云的平均密度

目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中,点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集,低密度区域表示点云较稀疏。计算…...

C语言之数据在内存中的存储(1),整形与大小端字节序

目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的,涉及到大小端字节序这一概念,还有如何判断大小端,希望对大…...

B端全局导航:左侧还是顶部?不是随随便便,有依据在。

一、什么是全局导航 B端系统的全局导航是指在B端系统中的主要导航菜单,它通常位于系统的顶部或左侧,提供了系统中各个模块和功能的入口。全局导航菜单可以帮助用户快速找到和访问系统中的各个功能模块,提高系统的可用性和用户体验。 全局导航…...

什么是海外仓管理自动化?策略及落地实施步骤指南

作为海外仓的管理者,你每天都面临提高海外仓运营效率、降低成本和满足客户需求的问题。海外仓自动化管理技术为这些问题提供了不错的解决思路,不过和任何新技术一样,从策略到落地实施,都有一个对基础逻辑的认识过程。 今天我们整…...

自定义控件三部曲之绘图篇(六)Paint之函数大汇总、ColorMatrix与滤镜效果、setColorFilter

在自定义控件的绘图篇中,Paint 类是核心的组成部分之一,它控制了在 Canvas 上绘制的内容的各种属性,包括颜色、风格、抗锯齿、透明度等等。下面将详细介绍 Paint 的主要功能以及如何使用 ColorMatrix 和 setColorFilter 来实现滤镜效果。 Pa…...

请写sql满足业务:找到连续登录3天以上的用户

为了找到连续登录超过 3 天的用户,我们可以使用 SQL 窗口函数和递归查询来实现。假设有一个 user_logins 表,包含以下字段: user_id(用户ID)login_date(登录日期) 假设 login_date 是 DATE 类…...

fatal error: apriltag/apriltag.h: No such file or directory 的 参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04,ROS-Noteic 一、问题描述 自己编译ROS程序的时候遇到如下问题: fatal error: apriltag/apriltag.h: No such file or directory9 | #include &…...

C++继承(一文说懂)

目录 一: 🔥继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二:🔥基类和派生类对象赋值转换三:🔥继承中的作用域四:&a…...

卷积神经网络可视化的探索

文章目录 训练LeNet模型下载FashionMNIST数据训练保存模型 卷积神经网络可视化加载模型一个测试图像不同层对图像处理的可视化第一个卷积层的处理第二个卷积层的处理 卷积神经网络是利用图像空间结构的一种深度学习网络架构,图像在经过卷积层、激活层、池化层、全连…...

RxJava学习记录

文章目录 1. 总览1.1 基本原理1.2 导入包和依赖 2. 操作符2.1 创建操作符2.2 转换操作符2.3 组合操作符2.4 功能操作符 1. 总览 1.1 基本原理 参考文献 构建流:每一步操作都会生成一个新的Observable节点(没错,包括ObserveOn和SubscribeOn线程变换操作…...

Spring Boot Vue 毕设系统讲解 3

目录 项目配置类 项目中配置的相关代码 spring Boot 拦截器相关知识 一、基于URL实现的拦截器: 二、基于注解的拦截器 三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿: 项目配置类 项目中配置的相关代码 首先定义项目认…...

Spring Boot对接大模型:实战价值与技巧

Spring Boot对接大模型:实战价值与技巧 随着大数据和人工智能技术的飞速发展,大模型(Large-scale Models)在各个行业中的应用越来越广泛。为了充分利用这些大模型的能力,我们需要将其与现有的应用框架进行对接。Sprin…...

完美解决NameError: name ‘file‘ is not defined的正确解决方法,亲测有效!!!

完美解决NameError: name ‘file’ is not defined的正确解决方法,亲测有效!!! 亲测有效 完美解决NameError: name file is not defined的正确解决方法,亲测有效!!!报错问题解决思路…...

Witness Table 的由来

“Witness Table” 是 Swift 中的一个术语,源于编译原理和类型系统的概念。它被用来表示一种机制,通过这个机制,编译器可以确保某个类型确实实现了它声明遵循的协议中的所有方法和属性。下面是对这个术语的详细解释: 1. 术语来源…...

Python 3 AI 编程助手

Python 3 AI 编程助手 Python 3 是当前最流行的编程语言之一,特别是在人工智能(AI)领域。Python 3 的语法简洁明了,拥有丰富的库和框架,使其成为开发 AI 应用程序的首选语言。本文将介绍 Python 3 在 AI 编程中的关键特性、常用库以及如何使用 Python 3 构建 AI 应用程序…...

【nginx】nginx的配置文件到底是什么结构,到底怎么写?

背景:我window中下载了一个nginx,想要通过nginx来对本地的两个项目做动态代理,但是没想到下载启动都没遇见什么问题,但是在配置nginx.conf配置文件时,遇见了很多问题,查了好久没查到什么特别有用的内容&…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...