OpenSearch 与 Elasticsearch:7 个主要差异及如何选择

OpenSearch 与 Elasticsearch:7 个主要差异及如何选择 image1

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
image2

图片来源[12]

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

image3
image3

图片来源[13]

该图显示了过去 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

本文由 mdnice 多平台发布

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

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

相关文章

#友元函数与友元类

目录 1.概念 2.友元函数 3.友元类 1.概念 友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多 用。 友元分为:友元函数和友元类 2.友元函数 友元函数可以直接访问类的私有成员&a…

计算机网络学习记录 物理层 Day2

计算机网络学习记录 你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner gitee https://gitee.com/Qiuner 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我会…

Android build.prop生成过程源码分析

Android的build.prop文件是在Android编译时刻收集的各种property【LCD density/语言/编译时间, etc.】&#xff1b;编译完成之后&#xff0c;文件生成在out/target/product/<board【OK1000】>/system/目录下&#xff1b;在Android运行时刻可以通过property_get()[c/c域] …

BI赋能金融新质生产力,16家金融机构智能BI创新实践分享

2024年政府工作报告强调&#xff0c;要“大力发展科技金融、绿色金融、普惠金融、养老金融、数字金融”&#xff0c;同时“大力推进现代化产业体系建设&#xff0c;加快发展新质生产力”。对于金融行业而言&#xff0c;培育新质生产力是高质量发展的关键着力点。金融机构可以通…

Linux学习笔记3---WSL2交叉编译

ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译&#xff0c;编译就需要编译器&#xff0c;在上一章里面已经讲解了如何在 Liux 进行 C 语言开发&#xff0c;里面使用 GCC 编译器进行代码编译&#xff0c;但使用的 gcc 编译器是针对 X86 架构的&#xff01;而…

极简—springMVC工作流程

1、流程图 2、流程 发起请求&#xff1a;客户端通过 HTTP 协议向服务器发起请求。前端控制器&#xff1a;这个请求会先到前端控制器 DispatcherServlet&#xff0c;它是整个流程的入口点&#xff0c;负责接收请求并将其分发给相应的处理器。处理器映射&#xff1a;DispatcherS…

自动控制原理学习--平衡小车的控制算法(二)

上一节 在matlab建模&#xff0c;这一节PID控制. 一、模型 直接先放一张matlab simulink的模型&#xff08;只有直线速度环和平衡环&#xff0c;串联PID&#xff09;&#xff0c;就在上一节的基础上加了两个PID。 二、PID控制 PID的好处就是可以不用动力学建模&#xff08;当…

Vue-组件中的data

一个组件的data选项必须是一个函数。保证每个组件实例&#xff0c;维护独立的一份数据对象。如下图&#xff1a; 组件一旦封装好了&#xff0c;可以使用多次&#xff0c;比如数字框组件使用了三次&#xff1a; 每次创建新的组件实例&#xff0c;都会重新执行一次data函数&#…

52. 【Android教程】网页视图:WebView

在前面的章节我们所围绕的全部都是纯客户端开发&#xff0c;我们叫 Native 开发。这样的好处就是体验和性能会非常好&#xff0c;但是在实际的使用中我们会发现存在大量的 H5 页面。这样就可以结合 Native / H5 双端的优势完成一个混合开发&#xff0c;而在这种开发模式中首当其…

windows 环境下安装《车辆动态监控系统》支持JT808、JT1078、苏标主动安全设备接入

《车辆动态监控系统》下载安装部署包 开放端口 80/443/8800&#xff0c;web后台端口&#xff0c;nginx代理服务&#xff0c;nginx默认为8800端口8808&#xff0c;JT808专用端口6802&#xff0c;视频播放推流端口6891-6898&#xff0c;FTP端口6821&#xff0c;苏标主动安全附件…

msvcp110.dll是什么东西?关于msvcp110.dll丢失修复的问题分享

msvcp110.dll是什么东西&#xff1f;如果有人问出这个问题&#xff0c;那么百分之一百就是他遇到了丢失msvcp110.dll文件的问题了&#xff0c;不然别人是不可能问出这个问题的&#xff01;这个文件名字一般只有在你的电脑系统出现问题的时候&#xff0c;它才会弹出提示。今天来…

SpringCloud 集成consul,消费者报I/O error on GET request for...

创建消费者微服务&#xff0c;去调用生产者微服务的请求过程中&#xff0c;出现以下错误&#xff1a; 报错原因 因为在使用SpringCloudAlibaba中的Nacos框架时&#xff0c;自动整合了SpringCloud中的Ribbon框架中的负载均衡&#xff0c;因为微服务提供者有两个&#xff0c;在消…

OpenGL入门第二步:颜色、纹理设置(解析)

OpenGL入门第一步:创建窗口、重写虚函数-CSDN博客 1、设置颜色 添加QColor变量,如果需要颜色随时间变化,那就再添加一个定时器QElapsedTimer以及重写虚函数timerEvent。 initializeGL()函数设置片段着色器中颜色变量 如果需要设置时间别忘了开启计时器 timerEvent函数里写…

【Java orm 框架比较】十 新增hammer_sql_db 框架对比

迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db 操作数据 …

利用大语言模型(KIMI)生成OPC UA 信息模型

在大语言模型没有出现之前&#xff0c;人们更倾向使用图形化工具或者基于窗口的软件来构建信息模型&#xff0c;图形化工具能够直观地表达信息模型中各元素之间的相互关系。但是图形化工具也有缺点&#xff0c;当描述一个复杂的信息模型时&#xff0c;图形会变得非常复杂和庞大…

Agent AI智能体的未来:无限可能

文章目录 终结者智能体正反影响自我意识开放心态 终结者 还记得那场人类与天网之间的史诗般的战斗吗&#xff1f;-- 《终结者》系列电影。 《终结者》系列电影是一部标志性的科幻动作系列&#xff0c;以紧张刺激的情节、令人难忘的角色和开创性的视觉效果而闻名。 电影探讨了…

丰田生产方式的四大误解:揭示真相,打造高效生产新篇章

丰田生产方式作为世界知名的制造业管理模式&#xff0c;一直备受关注。然而&#xff0c;在其广泛传播和实践过程中&#xff0c;也产生了不少误解。本文将揭示丰田生产方式的四大代表性误解&#xff0c;带大家领略其真正的魅力。 误解一&#xff1a;丰田生产方式只适用于汽车行业…

Python版Spark core详解

文章目录 第一章 SparkCore1.1. Spark环境部署1.1.1. Spark介绍1.1.1.1. 什么是Spark1.1.1.2. Spark与MapReduce的对比框架对比运行流程对比 1.1.1.3. Spark的组件1.1.1.4. Spark的特点 1.1.2. Spark的安装部署1.1.2.1. Spark安装包下载1.1.2.2. Spark部署模式介绍1.1.2.3. Loc…

怎么组织和筹备一场大型活动?

从业10年&#xff0c;组织和筹备过的活动大大小小几十次&#xff0c;其中包括公司的各种年中/终会议、客户答谢会、论坛沙龙、双11和618大型直播爆破活动等等。 虽然每次活动或者会议的主题有所不懂&#xff0c;但是只要掌握了方法&#xff0c;就能够非常高效且全面地做好准备…

3d中如何对模型粉碎处理?---模大狮模型网

在3D建模和动画设计中&#xff0c;模型粉碎处理是一种引人注目的效果&#xff0c;可以为场景增添动态和震撼的视觉效果。无论是用于电影特效、游戏设计还是虚拟现实项目&#xff0c;都可以通过模型粉碎处理来创造出引人入胜的场景。本文将介绍如何在3D中轻松实现模型粉碎处理&a…