OpenSearch 与 Elasticsearch主要差异

news2024/11/24 15:37:11

1. 什么是 Elasticsearch?

Elasticsearch 是一个基于 Apache Lucene 构建的开源、RESTful、分布式搜索和分析引擎。它旨在处理大量数据,使其成为日志和事件数据管理的流行选择。 Elasticsearch 还以其实时功能而闻名,允许用户在数据模式发生时探索、分析和可视化。

除了日志和事件数据管理之外,Elasticsearch 还常用于全文搜索和运营智能用例。它的目标是可扩展、有弹性且快速,允许您近乎实时地索引和搜索数据。 Elasticsearch 还支持复杂查询以执行详细分析,并支持多租户以轻松管理多个索引。

Elasticsearch 的关键特征之一是其分布式特性。这意味着索引可以分为分片,每个分片都是一个独立的索引。此功能允许数据分布在服务器集群上,从而有助于处理大型数据集。

2. 什么是 OpenSearch?

OpenSearch 是 AWS 于 2021 年创建的开源项目,作为 Elasticsearch 7.10.2 的分支。这意味着它具有与 Elasticsearch 相同的基本功能,但从那时起,该项目在几个方面与 Elasticsearch 有所不同。

除了 OpenSearch 之外,Amazon 还提供了一项名为 OpenSearch 的完全托管的搜索和分析服务。它包括 OpenSearch 和 OpenSearch Dashboards(源自 Kibana 7.10 的社区驱动的开源数据可视化和用户界面套件)。用户只需为在 AWS 上运行的资源付费,无需为搜索和可视化软件支付额外费用。

作为一项完全托管的服务,OpenSearch[1] 旨在易于设置和管理。这使得公司能够大规模部署、保护和运行 OpenSearch。用户只需在 AWS 管理控制台中单击几下即可设置和配置其 OpenSearch 集群,AWS 会处理修补、升级和备份等任务。

OpenSearch 还免费提供安全功能,包括加密、用户身份验证和访问控制以及审核日志记录。它提供自动快照、高可用性和轻松扩展,使其能够处理大量数据。

3. OpenSearch 背后的戏剧性事件:Elastic 与 AWS 之间的紧张关系

继 2010 年根据开源 Apache 2.0 许可证发布后,Elasticsearch 作为全球最受欢迎的企业搜索引擎而声名鹊起,成为全球首选的企业搜索引擎。 Elasticsearch 经常与 Logstash 和 Kibana(称为 ELK 堆栈[2]的组合)一起部署,以支持日志分析用例,包括应用程序可观察性[3]、安全日志分析[4]和理解用户行为[5]。

认识到其潜力,2015 年,亚马逊利用该开源许可证推出了 Amazon Elasticsearch Service (Amazon ES)[6],这是一项基于云的托管服务,允许 AWS 客户启动可扩展的 Elasticsearch 集群,将数据源连接到集群端点,并加载、处理数据 、分析或可视化云中的数据。

但 Elasticsearch 背后的公司 Elastic NV 和亚马逊之间的紧张关系加剧, Elastic NV 的开发人员最终反对亚马逊使用其产品和商标,指控亚马逊侵犯商标权和误导性营销,并于 2019 年对这家科技巨头提起诉讼,指控其涉嫌商标侵权和虚假广告。 Elastic 和 Amazon 将在 2021 年解决诉讼,并取得两项重要进展:

2021 年 1 月,Elastic NV 宣布,从版本 7.11 开始,Elasticsearch 将根据服务器端公共许可证 (SSPL) 和 Elastic License 获得许可[7]。这一更改阻止 Amazon 和其他公司在不直接与 Elastic 合作的情况下提供 Elasticsearch 作为服务。

2021 年 4 月,亚马逊宣布将分叉 Elasticsearch 最后一个开源版本(7.10.2),推出新的开源搜索引擎项目[8]。由于"Elasticsearch"这个名称不能再使用,新项目将被称为 OpenSearch。亚马逊还将以"Amazon OpenSearch Service"的名称提供 OpenSearch 作为云服务。

除了这两种搜索解决方案的历史[9]之外,我们将仔细研究 Opensearch 和 Elasticsearch 在过去 2.5 年中的差异,以及哪一种最适合您的 AWS 日志分析[10]或企业搜索应用程序。

4. OpenSearch 与 Elasticsearch:有什么相同之处?

OpenSearch 是从 Elasticsearch 的一个相对高级的分支开发的,因此这两个应用程序中的搜索、分析和仪表板的所有基本功能都是相同的。

OpenSearch 和 Elasticsearch 都提供多租户架构和分析引擎,具有全文搜索和分布式搜索功能。因此,OpenSearch 和 Elasticsearch[11] 都可用于实现网站搜索、企业搜索和日志分析用例。

在下一节中,我们将在七个维度上探讨 OpenSearch 和 Elasticsearch 之间的主要区别:许可、社区、功能、安全性、性能、定价和支持文档。

5. OpenSearch 与 Elasticsearch:主要区别

当您比较 OpenSearch 和 Elasticsearch 时,许可、社区、功能、安全性、性能、定价和支持文档都是关键的区别。

5.1 许可

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

在与 Amazon 发生纠纷后,Elasticsearch 现在已获得 SSPL 和 Elastic 许可证的许可。此举在开源社区引发了争议,因为 SSPL 并未被开源促进会 (OSI) 认可为开源许可证。在此更改之后,Elasticsearch 不再被视为开源,因为许可现在要求任何向第三方提供 Elasticsearch 功能的人发布整个源代码以及第三方自行运行所需的所有 API。

OpenSearch 目前根据 Apache 2.0 许可证获得许可。

5.2 社区

OpenSearch 和 Elasticsearch 都拥有健康、活跃且专注的社区,因此这两个搜索引擎不太可能在功能提供方面远远落后或很快失去支持。

然而,查看 GitHub 上每个解决方案的代码库就会发现,与 OpenSearch 相比,Elasticsearch 代码库在过去一年中的提交数量更多。

image2
该图显示了过去 12 个月内 OpenSearch 代码库的新提交数量
image3
该图显示了过去 12 个月内 Elasticsearch 代码库的新提交数量

这并不是一个完全公平的比较,因为 Elasticsearch 代码库还包括 X-Pack Elasticsearch 插件[14]的代码,该插件在 Elasticsearch 之上提供警报、监控和机器学习功能(OpenSearch 的类似功能位于不同的代码库中) 。尽管如此,大量的提交表明与 OpenSearch 项目相比,Elasticsearch 的开发和改进速度更快。

5.3 功能

当 Amazon 最初分叉 Elasticsearch 7.10.2 来创建 OpenSearch 时,他们首先必须删除与 Apache 2.0 许可证不兼容的所有代码。这包括禁用所有遥测收集功能并删除整个 Elastic X-Pack 代码。

这些更改导致 OpenSearch 最早版本的功能严重丧失,但 Amazon 正在继续通过可以替代这些功能的外部插件/连接器提供新的 OpenSearch 功能[15]。因此,AWS 客户可以使用 OpenTelemetry Collector 插件来收集和格式化遥测数据,而不是 Elasticsearch 的原始遥测收集功能。还有一个 OpenSearch Observability[16] 插件,可用于分析来自分布式应用程序的遥测数据。

Elasticsearch 和 Kibana 通常仍然一起使用,而 Amazon 通过分叉 Kibana 开发了自己的可视化工具,称为 OpenSearch Dashboards。

5.3.1 数据摄取

Elasticsearch 和 OpenSearch 都提供强大的数据摄取功能,但它们处理此任务的方式不同。 Elasticsearch 支持各种数据类型和结构,并在索引之前使用摄取节点对文档进行预处理。它还支持批量数据摄取,使其成为大规模数据分析的不错选择。

OpenSearch 注重易用性以及与其他 AWS 服务的集成。它提供了一个用于数据摄取的托管管道,简化了将数据移入系统的过程。 OpenSearch 还与 AWS Kinesis、AWS Glue 和 AWS Lambda 等服务无缝集成,提供完整的数据处理管道。

5.3.2 客户端库

Elasticsearch 拥有多种编程语言的客户端库,例如 Java、Python、。NET、PHP、Perl、Ruby 和 JavaScript。这使得开发人员可以轻松地将 Elasticsearch 集成到他们的应用程序中,无论他们使用哪种编程语言。

OpenSearch 有自己的一组客户端库。截至撰写本文时,它提供了 Python、Java、JavaScript (Node.js)、Go、Ruby、PHP、。NET 和 Rust 的客户端。此外,OpenSearch 在技术上与 Elasticsearch 客户端兼容,因为它本质上与 Elasticsearch 是同一平台。然而,Elasticsearch 添加了许可证限制,阻止其客户端连接到 OpenSearch。

5.4 性能

Elasticsearch 和 OpenSearch 都旨在处理大量数据并提供快速、可靠的搜索结果。它们都使用相同的底层引擎(Lucene)并提供相似的功能,例如分片、复制和分布式架构以确保高性能。

如果您正在大规模执行搜索操作,您可能有兴趣了解哪些搜索引擎可以提供更快的查询。 Elastic 最近发布了一篇博客,涵盖了这个主题,标题为" Elasticsearch vs。 OpenSearch:揭开性能差距[17]"。

该博客引用了 TechTarget 企业战略小组的一项调查结果,该调查比较了 Elasticsearch 和 OpenSearch 在六个领域的性能:文本查询、排序、日期直方图、术语和范围。总体而言,我们发现 Elasticsearch 引擎比 OpenSearch 快 40-140%,同时消耗的计算资源更少。

5.5 定价

Elasticsearch 和 OpenSearch 的定价模型是另一个分歧点。 Elasticsearch 由 Elastic 管理,提供分层定价模型。它包括具有基本功能的免费层和可解锁更多高级功能的付费层。 OpenSearch 作为 AWS 管理的项目,可以免费使用所有级别的功能。但是,如果用户选择使用 AWS 服务来托管和管理其 OpenSearch 实例,则会产生费用。

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

使用这些搜索引擎的更常见方法是在云中 - 使用 Elastic Cloud(可在多个公共云提供商上使用)或使用 Amazon OpenSearch Service。标准订阅的 Elastic Cloud 起价为每月 95 美元以上,而 AWS 客户如果仍低于 AWS 免费套餐使用限制,则可以开始免费使用 OpenSearch Service。

OpenSearch 用户还可以访问完整的 OpenSearch 功能集,而某些 Elasticsearch 功能仅适用于黄金级、白金级或企业级订阅级别的用户。 Elasticsearch 和 Amazon OpenSearch Service 的实际按使用付费成本因用户而异,但这两个提供商都提供了一个可让您估算成本的工具。

5.6 支持和文档

Elasticsearch 拥有丰富的可用文档,涵盖从基本设置到高级使用场景的所有内容。它还拥有一个可以提供支持的大型活跃社区。 Elasticsearch 背后的公司 Elastic 也提供付费支持选项。

OpenSearch 是一个相对较新的项目,其文档仍在不断增长。也就是说,AWS 致力于维护 OpenSearch 的全面文档,并且现有的 Elasticsearch 文档在很大程度上仍然适用。 OpenSearch 还受益于广泛的 AWS 社区的支持。与 Elastic 一样,AWS 为 OpenSearch 提供付费支持选项。

5.7 安全

Elasticsearch 和 OpenSearch 配备了许多相同的安全功能。OpenSearch 和免费版本的 Elasticsearch 中包含密码保护和数据加密等基本安全功能。但 Elasticsearch 用户需要升级到高级订阅(黄金级、白金级或企业级)才能利用高级安全功能,包括基于角色的访问控制 (RBAC)、字段和文档级安全性以及审核日志记录。

Elasticsearch 最初仅在其付费版本中提供高级安全功能。然而,在许可变更之后,Elastic 宣布这些功能将免费提供。其中包括 SSL 加密、基于角色的访问控制和审核日志记录。

相比之下,只要您选择 OpenSearch,它就会将安全功能作为其核心产品的一部分。它提供类似于 Elasticsearch 的功能,例如加密、用户身份验证和细粒度访问控制。鉴于其由 AWS 管理,用户还可以受益于 AWS 云强大的安全性和合规性基础设施。

6. OpenSearch 和 ElasticSearch 如何选择?

在 Elasticsearch 和 OpenSearch 之间进行选择很大程度上取决于您的具体需求和情况。如果您更喜欢具有完善社区和广泛文档的成熟产品,Elasticsearch 可能是更好的选择。另一方面,如果您重视开源软件的原则并且更喜欢免费提供高级功能的工具,那么 OpenSearch 可能更适合。

考虑您的托管环境也很重要。如果您已经在使用 AWS 服务,OpenSearch 可能会提供更顺畅的集成和管理。相反,如果您使用其他云提供商或在本地托管搜索引擎,Elasticsearch 可能会提供更大的灵活性。

最后,值得考虑这两个项目的未来方向。 Elasticsearch 仍然是企业搜索领域的全球领导者,并在该领域拥有悠久的创新记录。亚马逊的 OpenSearch 的贡献者社区更加有限,而且企业赞助商的关注度也较低,因此在未来的创新方面可能会逐渐落后于 Elasticsearch。

参考链接:

https://www.chaossearch.io/blog/opensearch-vs-elasticsearch-comparison 作者:[David Bunting]{.underline}[18],2023 年 10 月 26 日

https://coralogix.com/guides/elasticsearch/elasticsearch-vs-opensearch-key-differences/

参考资料 [1]

OpenSearch: https://coralogix.com/blog/4-ways-ingest-data-aws-opensearch/

[2]

ELK 堆栈: https://www.chaossearch.io/blog/switching-from-the-elk-stack-elasticsearch-costs

[3]

应用程序可观察性: https://www.chaossearch.io/use-cases/observability

[4]

安全日志分析: https://www.chaossearch.io/use-cases/security-lake

[5]

理解用户行为: https://www.chaossearch.io/use-cases/user-insights

[6]

推出了 Amazon Elasticsearch Service (Amazon ES): https://aws.amazon.com/blogs/aws/new-amazon-elasticsearch-service/

[7]

Elasticsearch 将根据服务器端公共许可证 (SSPL) 和 Elastic License 获得许可: https://www.elastic.co/blog/licensing-change

[8]

推出新的开源搜索引擎项目: https://aws.amazon.com/blogs/opensource/introducing-opensearch/

[9]

这两种搜索解决方案的历史: https://kubeops.net/blog/elasticsearch-versus-opensearch

[10]

AWS 日志分析: https://www.chaossearch.io/blog/streaming-analytics-aws-logging-applications

[11]

OpenSearch 和 Elasticsearch: https://medium.com/@bhongaleprathamesh/elasticsearch-vs-opensearch-feature-comparison-and-considerations-cd9c990e1482

[12]

图片来源: https://github.com/opensearch-project/OpenSearch/graphs/commit-activity

[13]

图片来源: https://github.com/elastic/elasticsearch/graphs/commit-activity

[14]

X-Pack Elasticsearch 插件: https://www.elastic.co/downloads/x-pack

[15]

OpenSearch 功能: https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html

[16]

OpenSearch Observability: https://aws.amazon.com/opensearch-service/features/observability/

[17]

Elasticsearch vs。 OpenSearch:揭开性能差距: https://www.elastic.co/blog/elasticsearch-opensearch-performance-gap

[18]

[David Bunting]{.underline}: https://www.chaossearch.io/blog/opensearch-vs-elasticsearch-comparison#authorBlock


---------------------
作者:大数据杂货铺
来源:CSDN
原文:https://blog.csdn.net/wang_x_f911/article/details/138496232
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

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

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

相关文章

解决linux下载github项目下载不下来,下载失败, 连接失败的问题

第一步:打开/etc/hosts文件 linux vim /etc/hosts 第二步:文件拉到最下面,输入以下内容 linux #GitHub Start 140.82.113.3 github.com 140.82.114.20 gist.github.com 151.101.184.133 assets-cdn.github.com 151.101.184.133 raw.githubus…

中国最厉害的改名大师颜廷利:食物的真正人生意义是识悟

在探索人生意义的深邃征途中,我们本应以“识悟”为航标,不断扬帆远航,以实现自我的升华。然而,当回望人世繁华,古往今来,无论男女老少,似乎都在“食物”的陪伴下,徘徊往复&#xff0…

Ubuntu下安装和配置MariaDB

Ubuntu下安装和配置MariaDB 简介 MariaDB 是一个流行的开源关系型数据库管理系统,是 MySQL 的一个分支,由 MySQL 的创始人开发和维护。MariaDB 完全兼容 MySQL,并且提供了许多增强功能和性能改进。MariaDB 以其稳定性和高性能受到广泛使用,适用于各种规模的应用。本文将详…

深度神经网络——什么是NLP(自然语言处理)?

自然语言处理(NLP) 是对使计算机能够处理、分析、解释和推理人类语言的技术和工具的研究和应用。 NLP 是一个跨学科领域,它结合了语言学和计算机科学等领域已建立的技术。 这些技术与人工智能结合使用来创建聊天机器人和数字助理,…

企业数字化转型好帮手蚓链,超多创新亮点等你来!

家人们,今天必须给大家分享一下蚓链这个超棒的数字化转型好帮手呀! 在理念创新上,它做到了以用户为中心,给大家带来精准化、个性化的营销体验呢。 组织创新也超厉害,搭建了开放式创新平台,吸引外部合作伙伴…

SyntaxError: EOL while scanning string literal

背景: 在对字符串使用in关系运算符时,报错SyntaxError: EOL while scanning string literal 原因: 这是因为${var}中有换行符\n导致的,通过Log ${var}可以看出换行符确实导致的字符串hello的引号位于两行,从而导致…

计算机SCI期刊,IF=13.3+,期刊质量非常高,声誉佳

一、期刊名称 INTERNATIONAL JOURNAL OF COMPUTER VISION 二、期刊简介概况 期刊类型:SCI 学科领域:计算机科学 影响因子:13.369 中科院分区:2区 三、期刊征稿范围 《国际计算机视觉杂志》详细介绍了这一快速发展的领域的科…

在AMD GPUs上构建解码器Transformer模型

Building a decoder transformer model on AMD GPU(s) — ROCm Blogs 在这篇博客中,我们展示了如何使用PyTorch 2.0和ROCm在单个节点上的单个和多个AMD GPU上运行Andrej Karpathy精美的PyTorch重新实现的GPT。我们使用莎士比亚的作品来训练我们的模型,然…

数据和埋点的通俗解释

举一个生活的例子,让大家理解一下数据和埋点 从前,小镇里新开了一家游乐园,游乐园里有各种各样的游乐设施,过山车、激流勇进、大摆锤、主题餐厅。大家非常喜欢,刚开业不久就收获了很多游客的青睐。 运营了一段时间之…

GD32调试篇:STLINK驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

stablediffusion的controlnet线稿只能用1.5的底模吗,有XL能用的线稿模型吗?

推荐一个超级好用的 SDXL-ControlNet 模型:Anytest,不止是线稿转绘,还能帮你补全线稿以及二创哦! 而且操作很简单,不需要预处理器,直接使用即可。 基础的功能包括根据线稿生成图像,对图片进行…

揭秘Kafka:大数据和流计算领域的高可用利器

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 哈喽,大家好,我是小米,一个积极活泼、热爱技术分享的大哥哥!今天我们来聊聊在大数据和流计算领域备受推崇的消息系统——Kafka。Kafka以其高效、可伸…

APaaS:智能制造助手

资金不足、IT基础架构薄弱...... 车间业务需求不断地在增加...... 都在说数字化,都在说转型...... 随着企业竞争的日益激烈和市场环境的快速变化,企业需要一个灵活、高效、快速响应市场变化的新平台。在这样的背景下,APaaS应运而生&#x…

从0开始C++(一)

目录 c的基本介绍 C语言和C 的区别 面向过程和面向对象的区别 引用 引用使用的注意事项 赋值 终端输入 cin getline string字符串类 遍历方式 字符串和数字转换 函数 内联函数 函数重载overload 小练习: 参考代码 c的基本介绍 C是一种通用的高级编…

银行卡归属地查询-银行卡归属地接口-银行卡归属地API

接口简介:通过银行卡号查询国内外银行名称、银行卡卡种、卡品牌以及银行卡发卡省份和城市,支持借记卡和部分贷记卡的发卡省市查询。 若银行卡是农村信用社,归属地无法区分到城市,只能到省份 接口地址:https://www.wapi…

高考分数线一分一段统计汇总(熟练SQL窗口函数)

高考分数线一分一段统计汇总(使用SQL窗口函数) select 总分数, 一分一段人数, sum(一分一段人数) over( order by 总分数 desc) as 累计排名 from( select 总分数, count(考生号) as 一分一段人数 from ( select 考生号&…

【保姆级教程】Linux 基于 Docker 部署 MySQL 和 Nacos 并配置两者连接

一、Linux 部署 Docker 1.1 卸载旧版本(如有) sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2 安装 yum-utils 包 sudo yum install -y…

深入理解并打败C语言难关之一————指针(3)

前言: 昨天把指针最为基础的内容讲完了,并且详细说明了传值调用和传址调用的区别(这次我也是做到了每日一更,感觉有好多想写的但是没有写完),下面不多废话,下面进入本文想要说的内容 目录&#…

JavaScript之内置对象

内置对象 JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象前面两种对象是javascript基础内容,属于ECMAScript;第三个浏览器对象属于我们javascript独有的,我们javascript API讲解 内置对象就是指javascript语言自带…

18.菜单logo制作

菜单logo制作 1. 在项目assets里面加入logo 2. layout下新建MenuLogo.vue组件 MenuLofo.vue <template><div class"logo"><img :src"MenuLogo" alt""><span class"logo-title">{{ title }}</span>…