前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenSearch vs Elasticsearch

OpenSearch vs Elasticsearch

作者头像
Tinywan
发布于 2024-07-31 04:21:57
发布于 2024-07-31 04:21:57
35000
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

Elasticsearch

Elasticsearch是一个流行的搜索引擎,基于Apache Lucene项目(也是Apache Solr的父项目),自2010年以来已被许多人用于搜索和日志分析。它的设计具有高度可扩展性,可用于广泛的应用程序,从简单的搜索功能到复杂的数据分析

Elasticsearch和Kibana作为Elastic Stack的一部分,都有一套强大的功能,包括支持全文搜索、企业搜索、真实的时间分析和地理空间查询。它曾经在Apache许可证下完全开源,直到2021年初竞争对手亚马逊开始创建自己的项目。Elasticsearch通常部署在自我管理或Elastic Cloud上。

什么是OpenSearch?

OpenSearch搜索引擎是亚马逊自2021年1月以来维护的Elasticsearch的一个分支。在fork事件之前,它基本上是相同的代码库,这也是项目开始略有分歧的时候。OpenSearch的一个关键特征是它对透明度和社区驱动开发的关注。

与Elasticsearch不同,OpenSearch由社区驱动的基金会管理。这意味着任何人都可以为OpenSearch的发展做出贡献。虽然这两个软件产品的代码库都是开放的,任何想要审查它的人都可以检查,但贡献代码和影响OpenSearch的方向比Elasticsearch更容易。它通常用作Amazon OpenSearch Service(以前称为Amazon Elasticsearch Service)的一部分。

在比较这两者时,我们将回顾Codebase作为牵引力和开发工作的信号,以及特性-因此您可以选择哪一个更适合您的需求。

代码库和发布

OpenSearch项目在7.10.2版本是最新版本时派生了Elasticsearch代码库,然后在OpenSearch代码库上进行了大量工作,以重命名项目并清理所有非Apache许可的代码(即X-Pack功能)。为了正确地比较两者所做的工作,我们统计了自2021年4月22日以来在主/主分支上进行的提交,这标志着OpenSearch在几个月前分叉后的第一个候选版本。

Elasticsearch仓库有近20 k次提交,其中6 k次提交到核心Elasticsearch(“服务器”文件夹),还有一些提交到卫星模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# total commits in repo since fork
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' | wc -l
19527
# total commits to the main codebase (server folder) since fork
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l
6130
# total commits to main modules (various surrounding functionality not under x-pack) since fork
# https://github.com/elastic/elasticsearch/tree/main/modules
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l
1437
# just as means of comparison, the amount of work made on x-pack features is not negligible
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- x-pack/ | wc -l
7294

OpenSearch的核心代码提交减少了超过3倍,重要模块的工作量减少了14倍,其中包括脚本语言、重新索引功能、摄入管道处理器等:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' | wc -l           
3727
➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l
1966
# total commits to main modules (surrounding functionality not under x-pack) since fork
# https://github.com/opensearch-project/OpenSearch/tree/main/modules
➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l
470

因此,与Elasticsearch发布的版本(主要和次要)相比,OpenSearch发布的版本较少。

虽然提交的数量并不是代码质量或软件性能的直接证据,但很明显,Elasticsearch项目在核心上看到了更多的工作,这反过来肯定会转化为更好的性能,更多的功能,跟上最新版本的依赖项和Lucene功能等等-特别是当差异达到这种程度时。

功能比较

搜索、分析和仪表板的所有基本功能在这两种技术之间完全相同。毕竟,OpenSearch是从Elasticsearch的一个非常成熟的版本派生出来的。对于标准用例,从功能的角度来看,选择哪个搜索引擎并不重要。

项目之间的功能差异将是Elastic的X-Pack(免费或付费)下的任何内容,以及分叉后添加的所有功能。

对于重要的功能,去一点点以上只是基本的-那些最终存在或将存在于两者。作为主要的例子,我们可以列出以下内容:

  • 数据流API由两者实现(尽管Elasticsearch刚刚发布了OpenSearch中没有的时间序列数据流)
  • 索引状态管理在OpenSearch中成为索引状态管理
  • 两者都有一些警报支持(尽管我们实际上建议使用ElastAlert2,而不是任何内置的警报解决方案)。
  • 两者都支持跨集群复制,在Elasticsearch中,这是一个高级层功能(不是免费的)。

在写这篇文章的时候,一些利基核心功能仍然是Elasticsearch独有的,比如geoshape和geohex网格聚合。

一些OpenSearch功能仅在托管服务Amazon OpenSearch Service上可用,另一方面,与Elastic Cloud不同,Elastic Cloud始终保持最新的Elasticsearch版本,Amazon的托管OpenSearch产品通常落后2-3个版本

大多数主要差异存在于可用于各种用例的垂直解决方案堆栈(例如APM,SIEM等)。以下是Elasticsearch和OpenSearch之间的主要区别。

安全

Elasticsearch和OpenSearch中的安全功能是一个相当广泛的类别,涉及几个功能和问题。身份验证(允许用户进入)、授权和RBAC(基于角色的访问控制)、用户模拟、审计日志、静态和传输中的加密以及各种多租户问题。

Elasticsearch的所有内置安全功能都是X-Pack Basic许可证的一部分,并且仅限于基于Elasticsearch的用户目录。从7.0版开始,所有用户都可以免费使用。要使用LDAP、OpenID、SAML和更多付费许可进行身份验证,需要使用这些许可。这同样适用于其他安全功能,如IP过滤,文档和字段级安全等。

OpenSearch提供相同的安全功能和控制,但完全免费。OpenSearch的安全模块完全在开放环境下开发,具有所有必要的功能:Active Directory和LDAP、SAML、OpenID、访问控制功能(包括屏蔽和字段级安全性)、审计日志、加密支持等。

随着安全性的发展,Elasticsearch和OpenSearch完全处于同一水平,OpenSearch通过将所有这些完全免费作为开源内置模块提供而具有优势。

可搜索快照

创建“离线”搜索体验的能力,从而显著减少了使用较旧、访问频率较低的数据运行Elasticsearch集群所需的硬件数量,这对许多用例来说是一个真正的游戏规则改变者。

Elasticsearch已经实现了这个功能,并且已经广泛使用了一段时间;而OpenSearch最近刚刚发布了它,它仍然被标记为实验性的。然而,非常重要的是- Elasticsearch需要在高层(企业)上使用此功能的付费许可证,而在OpenSearch中,可搜索快照是一个完全免费的功能

此功能由托管服务提供,在Elastic Cloud中称为“可搜索快照”或“冻结层搜索”,在Amazon OpenSearch Service中称为“Ultrawarm”。

机器学习

我们的建议是,不要仅仅因为Elasticsearch或OpenSearch不是专门为它构建的,就在其上运行机器学习人工智能工作负载。当然,有时候它很方便,但它不是没有价格标签的。

Elasticsearch和OpenSearch应该被认为是服务层引擎。你应该准备好数据结构,这样无论是否涉及ML,都可以轻松地从它们中提供数据。例如,您可以使用向量字段(密集或稀疏向量)并使用kNN / ANN算法通过向量搜索查找类似文档。

另一种方法是使用重新评分方法,如LTR插件所做的,以提高评分能力。

Elasticsearch和OpenSearch都为机器学习工作负载和用例提供了内置的解决方案(或“应用程序”),在某些情况下可能会派上用场(例如Elastic Stack中的内置SIEM),但在我们看来-不是一般的,广泛的使用。

数据摄取

当分叉发生时,Elasticsearch已经在作为Elastic Stack的一部分发布的所有外围软件工具中强制执行了版本检查。Logstash、Beats和JavaScript、Java等客户端库都在检查Elasticsearch集群,以确认它确实是Elasticsearch而不是OpenSearch。这在项目的这些方面产生了显著的分歧-您不能在OpenSearch中使用现代的Logstash或Beats;因此,您需要找到替代方案。

Data Prepper技术是OpenSearch项目的一部分,旨在满足这一需求。

或者,有专门的连接器准备各种数据流技术,如Kafka连接Kafka,Flink接收器用于各种来源,等等。

客户端库

两者之间的一个显著差异是易于使用各种编码语言和平台,以及客户端库的成熟度。

Elasticsearch拥有几乎所有软件开发平台的客户端库- Ruby,JavaScript,.NET,Java,Python等等。虽然它是一个HTTP REST API,但有很多不同的API,有很多细节,一个好的客户端库能够提供良好的语法糖,并简化编写和维护与之交互的代码的过程。

自从分叉以来,大多数客户端库在尝试将它们连接到OpenSearch集群时都会抛出错误;随着时间的推移,这些技术自然会出现分歧,因此即使是核心和当前共享的API也会在两者之间发展和变化。因此OpenSearch需要开发和维护自己的客户端库。

不幸的是,这是OpenSearch的一个大弱点。我们尝试使用的各种客户端库都是最小的,缺乏,甚至有bug和文档漏洞。它们并不是完全不可用,但它们通常接近于不可用。有时直接使用简单的HTTP客户端库比使用OpenSearch的客户端库更容易。

许可和限制

当然,我们不能在没有讨论房间里的大象的情况下比较两者,这就是许可模式。Elasticsearch以前是在Apache许可证下发布的,这是一个非常宽松的许可证。这也是OpenSearch当前的许可证-但Elasticsearch现在是在一个不同的,不太宽松的许可证下发布的,许多人认为这不是开源许可证。

我和团队都不是律师--我们更喜欢保持高度的技术性,这是我们能够提供的真实的价值。但更多的时候,我们会被问到做X是合法的还是违反了Elastic的许可证。

要点是新许可证禁止将Elasticsearch API作为托管服务提供。如果你只是使用Elasticsearch作为你的应用程序的后端-你很好去。但是有很多灰色地带,比如将Elasticsearch嵌入作为一个整体销售的更大解决方案的一部分,暴露一些可以被视为Elasticsearch API的API(例如通过API进行搜索)等等。我们很多客户都希望零风险,特别是如果他们不需要Elasticsearch的任何特殊功能-他们选择使用OpenSearch并使用其基本功能,然后一些。

支持和文档

OpenSearch是一个开源项目,这意味着没有官方支持。OpenSearch的托管服务,如Amazon OpenSearch Service、Aiven等,将负责为您运行硬件和软件,但不负责您如何使用它。

Elasticsearch背后的公司Elastic Co确实通过其标准订阅许可证或通过Elastic Cloud上的托管产品提供支持。但同样,这种支持将是有限的,并不总是提供最好的定制建议,如何使用该技术,以最好地满足您的需求

当文档不够时,当您需要一个真正的专家作为您值得信赖的顾问时,我们已经确立了我们作为Elasticsearch和OpenSearch支持的世界领导者的名字。除了咨询和迁移服务,我们还提供24/7生产支持,以帮助处理紧急事务,并始终保持集群的健康运行。

还可以查看Pulse-我们的自动化顾问解决方案,用于主动监控和支持。

结论

简单地总结一下OpenSearch和Elasticsearch的比较--只要你不直接向客户提供Elasticsearch,或者不属于这样做的法律的灰色区域,你就可以安全地使用Elasticsearch和OpenSearch。

对于所有基本和主流的用例,Elasticsearch和OpenSearch之间没有任何区别。这些用例包括文本搜索、日志分析、仪表板等,这两种技术的用途完全相同。

由于广泛的客户端库支持,Elasticsearch很可能更容易从任何地方集成,并且由于非常活跃的开发团队,Elasticsearch也将更快地赶上bug和问题。

另一方面,OpenSearch很可能操作起来更便宜,如果你正在寻找一些超越基本功能的东西,比如一个成熟的SIEM,那么肯定是这样。这些解决方案的Elastic Stack实现很可能会更加成熟,但它们也会付出巨大的代价。

对于自我管理-这些可能是你的决定因素。如果你正在寻找一个托管的解决方案,有更多的选择有OpenSearch,显而易见的原因。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
图片压缩神器TinyPNG压缩JPG/PNG图片
在很多时候我们都会使用到PNG格式图片,而PNG图片由于其是一种无损的图片格式,它的文件会比较大,为了节约流量、提高加载速度,我们需要对欲上传的图片进行压缩。兜兜转转一圈,我使用最多的图片压缩工具仍然是 TinyPNG,这个在线服务压缩率高、画质损失小,方便了我为文章配图。
爱游博客
2019/08/08
6.1K0
图片压缩神器TinyPNG压缩JPG/PNG图片
30+ 图片压缩工具集合,包含在线压缩和CLI工具
许多开发人员花费了大量时间优化网页性能,比如优化 js、css、减少 http 请求等等,但减小图片大小产生的优化比其他所有领域加起来影响更大。
狂奔滴小马
2022/09/16
2.5K0
30+ 图片压缩工具集合,包含在线压缩和CLI工具
TinyPNG批量压缩图片Python脚本使用教程
TinyPNG是一个免费的在线批量压缩图片服务,但Web端有单次20张和单个文件5M的限制.同时TinyPNG官方提供了API,API限制每月500张,完全满足个人使用.本文将介绍使用Python脚本来批量压缩图片.
用户8851537
2021/07/30
1.2K0
"图像瘦身术":Java借助Tinify轻松将4M图片压缩至1M
在当今的数字化时代,图片已成为网站、应用和社交媒体中不可或缺的元素。然而,大尺寸的图片不仅会增加页面或者客户端加载时间,还会占用大量的存储空间。为了解决这个问题,可以使用图片压缩工具来减小图片的尺寸,然后再将压缩后的图片上传至对象存储服务(如阿里云OSS)。本文将详细介绍如何利用Tinify压缩图片,并将其上传至OSS,重点介绍图片压缩实现方式。
小明爱吃火锅
2024/09/23
5190
嗯,手搓一个TinyPng压缩图片的WebpackPlugin也SoEasy啦
曾经发表过一篇性能优化的文章《前端性能优化指南》,笔者总结了一些在项目开发过程中使用过的性能优化经验。说句真话,性能优化可能在面试过程中会有用,实际在项目开发过程中可能没几个同学会注意这些性能优化的细节。
JowayYoung
2020/08/06
9610
嗯,手搓一个TinyPng压缩图片的WebpackPlugin也SoEasy啦
PHP之压缩图片
这几天写项目也是遇到了需要手机上传图片.时代在进步.所以图片体积也越来越大.考虑到服务器的感受.所以需要将图片压缩下.
桑先生
2020/06/02
3.2K0
10 行 Python 代码,批量压缩图片 500 张,简直太强大了
原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw
Python猫
2019/05/08
8250
10 行 Python 代码,批量压缩图片 500 张,简直太强大了
TinyPNG:在线 PNG/JPEG 图片无损压缩工具
PNG 很有用,因为它是唯一一种广受支持的格式,它可以部分存储透明图像。虽然 PNG 格式使用压缩,但文件仍然可以很大。JPEG 是网站和应用程序上照片的最流行格式。许多 JPEG 文件没有使用最佳压缩,浪费了宝贵的字节。使用 TinyPNG 能为你的应用和网站压缩图片。它将使用更少的带宽,让网站加载速度更快。
Skykguj
2022/09/09
2K0
TinyPNG:在线 PNG/JPEG 图片无损压缩工具
高效的智能在线图片压缩应用—img.top
工作中,会遇到图片太大需要进行压缩,特别是平面设计师、前端开发工程师、摄影师等经常接触图片处理的人群,图片压缩可以说是家常便饭。如果你是图片处理的小白,这款图片压缩工具能为你带来帮助,img.top—一个智能在线图像压缩网站。
用户8241255
2022/07/29
6390
10 行 Python 代码,批量压缩图片 500 张,简直太强大了
这几天,我在用 Github page + hexo 搭建个人网站,为了延续风格,就想把配图与文章一起迁移过去。这时候就出现了一个难题:我所用的图片都是高清大图,放到网站上会严重拖慢加载速度。因此,需要先把图片压缩,再上传。
Python猫
2019/05/15
1.4K0
​PNG图片压缩对比分析
随着版本的迭代,业务的增加,QQ音乐apk的大小已经超过25M,其中res目录占用的大小超过5.5M,所以提出了对安装包进行瘦身的技术需求。
QQ音乐技术团队
2018/02/01
10.1K0
​PNG图片压缩对比分析
图片一键压缩,支持批量压缩
最近在写项目时用到了很多图片,由于考虑到图片过大会占用许多服务器资源所以就想到了去压缩图片,但是由于图片太多所以用photoshop操作也挺麻烦就找到了一个网站,如下
用户10106350
2022/10/28
1.2K0
教你用Python压缩图片
如果需要做图片识别那么必定需要大量的训练素材,我们通常使用爬虫来获取,python爬取bing图片,python爬取百度图片,但是怕取下来的图片大小不一,再进行训练之前必须进行裁剪和压缩,今天就来讲一讲图片压缩,下面这个例子是我做一个项目时用到的
py3study
2020/01/07
1.4K0
如何压缩图片?手把手教你三种图片缩小的办法
在平时的工作生活中大家肯定少不了用到图片,可是一些平台或者系统对于上传的图片的大小是有限制的,有的限制图片不超过1M、2M等等,这还是比较正常的,大部分图片都可以上传,但是也有很多把图片限制在几百K甚至几十K,比如参加一些考试网上报名的时候,图片大小限制在20K,这可难住了不少小伙伴,那么应该如何压缩图片呢?下面就一起来看一下小编总结的这三种图片缩小的方法吧!
用户7197538
2020/05/09
7790
纯 Python 实现的图片压缩工具
现在的手机拍摄的照片基本都在 10 MB 之上,而上传照片都有大小限制,那就需要对图片压缩,本文分享一个本地化的纯 Python 编写图片压缩工具,帮助您减小图像的文件大小,比很多在线压缩的要好用。
somenzz
2023/01/03
6540
纯 Python 实现的图片压缩工具
Android Studio 插件 Sequence Diagram,Translation,TinyPNG插件推荐
本篇内容,主要给大家推荐三个Studio中的插件分别是:Sequence Diagram, Translation和TinyPNG插件。
zinyan.com
2022/12/08
2.5K0
Android Studio 插件 Sequence Diagram,Translation,TinyPNG插件推荐
Optimizilla 在线图片压缩优化 自由调整图片压缩比例
现在的网站都有很多图片来提升整体效果,如果图片过大(超过 1M 以上)在访问的时候肯定会打开慢之类的情况发生,影响访客体验。之前介绍过tinypng 在线图片压缩,也是大家比较熟悉的了。今天介绍另外一个Optimizilla 在线图片压缩优化。 这个在线图像优化器使用最佳优化和压缩算法来达到最小尺寸的 JPEG 和 PNG 图像,同时保证最佳质量/尺寸比。在多数情况下优化器可以实现优于其它软件和软件的最佳图像压缩比。网站页面支持中文,支持批量上传压缩图片和批量下载,还支持手动拉动滚动条选择压缩后图片质量,并
魏艾斯博客www.vpsss.net
2018/06/01
2.1K0
推荐一个好用的图片压缩网站!清晰度不变的同时体积减小一大半
这是「进击的Coder」的第 635 篇技术分享 作者:崔庆才 我们肯定经常跟图片打交道吧,不管是写文章、传图片还是网站开发,我们或多或少都要插图,但有时候图片体积比较大的时候就会带来加载速度慢的一些问题,那么这时候你可能会有这么一个需求: “有没有什么办法在保证图片清晰度的时候把图片的体积压缩到最小? ” 大家通常会用什么办法呢? 我的话其实用的比较多的办法就是使用 PS,然后另存为 Web 所用格式,但用到这个功能我还得额外装个 PS,感觉比较麻烦。 所以,今天给大家推荐一个非常好用的图片压缩网站,可以
崔庆才
2022/06/06
1.6K0
推荐一个好用的图片压缩网站!清晰度不变的同时体积减小一大半
python3 使用pngquant压缩图片
在使用gitbook截图后保存在本地的图片都比较大,如果直接上传到文件服务中,也是占用比较多的空间。
Devops海洋的渔夫
2022/01/17
1.2K0
python3 使用pngquant压缩图片
在线网页图片无损压缩工具 Smush.it 和其 WordPress 插件
网页图片优化是网页加速中非常重要的一步,对图片进行压缩,不仅能够节约带宽,并且加快网页的速度。我们常用的图片编辑软件都可以在压缩图片。而使用 Smush.it 则可以大幅压缩图片,并且它还是一个无损的压缩工具。
Denis
2023/04/14
5750
在线网页图片无损压缩工具 Smush.it 和其 WordPress 插件
推荐阅读
相关推荐
图片压缩神器TinyPNG压缩JPG/PNG图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档