在2010年以Apache 2.0开源协议发布后,Elasticsearch迅速成为全球最受欢迎的企业搜索引擎。
Elasticsearch常与Logstash和Kibana一起部署,这一组合被称为 Elasitc Stack,用于启用日志分析用例,包括应用可观察性、安全日志分析和理解用户行为。
2015年,亚马逊利用这一开源协议推出了Amazon Elasticsearch Service(Amazon ES),这是一个云托管服务,允许AWS客户启动可伸缩的Elasticsearch集群,连接数据源到集群端点,并在云中加载、处理、分析或可视化数据。
然而,Elastic公司最终对亚马逊使用其产品和商标提出了反对,并在2019年因涉嫌商标侵权和虚假广告对这家科技巨头提起诉讼。
https://www.elastic.co/cn/blog/elastic-and-amazon-reach-agreement-on-trademark-infringement-lawsuit
Elastic和亚马逊在2021年解决了这一诉讼,带来了两个重要的发展:
2021年1月,Elastic 公司宣布,从7.11版本开始,Elasticsearch将根据Server Side Public License(SSPL)和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
1、OpenSearch与Elasticsearch相同点
OpenSearch是从Elasticsearch的一个相对高级的分叉版本开发而来的,所以两个应用在搜索、分析和仪表盘的所有基本功能上都是相同的。
OpenSearch和Elasticsearch都提供了多租户架构和全文搜索、分布式搜索能力的分析引擎。
因此,两者都可以用来满足网站搜索、企业搜索和日志分析的用例。
2、OpenSearch与Elasticsearch:有何不同?
在比较OpenSearch和Elasticsearch时,主要有以下几点不同:
版本
许可证
社区
功能
安全性
性能
价格
2.1 版本大不同
下图显示了Elasticsearch和OpenSearch两个搜索引擎解决方案的独立发展路径和发布节奏。
Elasticsearch经过1.X、2.X、5.X、6.X、7.x、8.X版本更新,最终发展到预计在2024年发布的9.x版本。
OpenSearch从1.0版本开始于2021年7月发布,然后逐步更新至2.x系列,其中2.6版本预计将是2024年的最后一个2.x系列版本,随后计划发布3.x系列。
2.2 许可证不同
在2021年之前,Elasticsearch在Apache 2.0许可证下可供公众使用。这个许可证允许用户出于任何目的使用、分发或修改软件,以及分发修改后的Elasticsearch版本而无需支付任何版税。
在与亚马逊的争议之后,Elasticsearch现在根据SSPL和Elastic许可证进行授权。这一变化之后,Elasticsearch不再被视为严格意义开源,因为许可证现在要求任何向第三方提供Elasticsearch功能的人必须发布整个源代码和所有第三方运行它所需的API。
OpenSearch目前根据Apache 2.0许可证授权。
一句话说一下SSPL协议和常规开源的不同:SSPL协议要求如果你提供基于此协议软件的服务,必须公开整个服务的源代码,而常规开源软件不需要。
这时候,大家可能在想,我们在使用 Elasticsearch,并没有公开源代码呀。
是这样的,国内能真正基于开源代码二次开发且商业化用途的代码,除了几个BAT、字节等大厂外,屈指可数。
也就是说:通俗说这是针对的类似亚马逊大厂商业化行为的协议!
使用SSPL 协议的部分开源软件如下。
软件名称 | 使用协议 | 时间 |
---|---|---|
MongoDB | SSPL | 2018年10月启用SSPL |
Graylog | SSPL | 2020年11月宣布4.0及以后的版本将使用SSPL |
Elasticsearch & Kibana | SSPL & Elastic许可证 | 2021年1月Elastic NV宣布将来版本将使用SSPL和Elastic许可证双重授权 |
2.3 社区不同
OpenSearch和Elasticsearch都拥有健康、活跃和忠诚的社区,因此两个搜索引擎都不太可能在功能供给上落后太远或很快不再受支持。
Elasticsearch 社区论文比较成熟,官方论坛地址:https://discuss.elastic.co/。
OpenSearch 官方论坛地址:https://forum.opensearch.org/。
我看了一下,OpenSearch论坛问题数和回复数都还没有形成规模。
2.4 功能不同
亚马逊最初分支Elasticsearch 7.10.2创建OpenSearch时,首先必须删除所有不兼容Apache 2.0许可证的代码。
这包括禁用所有收费功能并删除整个Elastic X-Pack代码。
功能 | Elasticsearch | OpenSearch | 备注 |
---|---|---|---|
许可证 | SSPL/Elastic License | Apache License 2.0 | OpenSearch保持了完全的开源许可 |
安全功能 | 部分为付费功能 | 大部分开源可用 | OpenSearch倾向于开源其安全功能 |
警报和异常检测 | 付费和开源版本 | 开源可用 | OpenSearch提供开源的警报和异常检测 |
SQL支持 | 有 | 有 | OpenSearch继承了Open Distro的SQL功能 |
机器学习支持 | 付费功能 | 开源插件形式提供 | OpenSearch社区提供ML插件 |
客户端兼容性 | 完全支持自家产品 | 兼容Elasticsearch 7.10 | OpenSearch保持对旧Elasticsearch客户端的兼容 |
社区支持 | 由Elastic公司主导 | 社区驱动 | OpenSearch鼓励社区贡献和反馈 |
插件生态 | 较闭合的生态系统 | 开放插件生态 | OpenSearch促进插件的开源发展 |
跟踪分析 | 付费功能 | 开源可用 | OpenSearch提供开源的跟踪分析功能 |
长期支持版本 | 提供 | 提供 | OpenSearch承诺提供长期支持的版本 |
https://github.com/opensearch-project
https://github.com/opensearch-project
2.5 安全性不同
Elasticsearch 和 OpenSearch都配备了许多相同的安全功能。
但是,这些功能都包含在OpenSearch中,而某些功能在Elasticsearch中只对付费客户可用。
如 OpenSearch 官网介绍:其已缺省安全。
Elastic 付费功能清单列表:https://www.elastic.co/cn/pricing
2.6 性能不同
如果你正在进行大规模的搜索操作,你可能会对这两种搜索引擎中哪一个能提供更快查询感兴趣。
Elastic最近发表了一篇博客,标题为“Elasticsearch vs. OpenSearch:揭开性能差距”。文章地址:
https://www.elastic.co/cn/blog/elasticsearch-opensearch-performance-gap
Elastic官网文档强调:“自从 Elasticsearch 的一个早期版本问世以来,OpenSearch 就没有跟上创新的步伐。自 OpenSearch GA 以来,Elasticsearch 在功能创新方面已经超过了 4 倍。”
Elastic官方对比强调,如下图所示——Elasticsearch在各个关键性能指标上的优势,并且更加节约存储资源。
文本查询(Text Querying):Elasticsearch在文本查询性能上比OpenSearch快76%。
排序(Sorting):在排序操作中,Elasticsearch比OpenSearch快58%。
日期直方图(Date Histogram):在进行日期直方图聚合时,Elasticsearch显示出比OpenSearch快81%的性能。
条款(Terms):在处理条款查询时,Elasticsearch的性能比OpenSearch快61%。
范围(Ranges):在范围查询方面,Elasticsearch展现出比OpenSearch快42%的性能。
Elasticsearch使用的存储空间比OpenSearch少37%。
这意味着Elasticsearch在处理同等任务时,不仅查询速度更快,而且在存储效率上也更优。
如下截图参见博客:https://www.elastic.co/cn/blog/migrating-1-billion-log-lines-opensearch-elasticsearch
左侧是:Opensearch,右边是:Elasticsearch。明显对比可知:Elasticsearch 较 OpenSearch 节省了 23 %的存储空间。
2.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
2.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/
3、总结
OpenSearch已发布3年多,Elasticsearch和OpenSearch已存在很多不同,但它们最终都源自同一个版本:Elasticsearch 7.10.2。
我们不对Elasticsearch和Amazon OpenSearch之间的选型提供直接的推荐,因为最合适的选择将取决于项目或产品独特的需求和环境。但,文中数据相信会给你提供参考。
建议读者根据自己的具体情况和偏好做出决定,并考虑功能需求、成本效益、长期的技术支持或自身是否具备架构及性能调优等能力。
4、参考
https://www.chaossearch.io/blog/opensearch-vs-elasticsearch-comparison
https://articles.zsxq.com/id_on65crp8xwfe.html
https://www.ruanyifeng.com/blog/2023/07/weekly-issue-264.html
https://wx.zsxq.com/dweb2/index/search/Opensearch/alltopics
7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线
更短时间更快习得更多干货!
和全球 近2000+ Elastic 爱好者一起精进!
http://elastic6.cn/——ElasticStack进阶助手
比同事抢先一步学习进阶干货!