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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择

在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、参考

7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线


更短时间更快习得更多干货!

和全球 近2000+ Elastic 爱好者一起精进!

http://elastic6.cn/——ElasticStack进阶助手

比同事抢先一步学习进阶干货!


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3天前
|
JSON 搜索推荐 API
使用Elasticsearch进行全文搜索:技术深度解析
【5月更文挑战第16天】本文深入解析了使用Elasticsearch进行全文搜索的技术细节。Elasticsearch是一个基于Lucene的开源搜索引擎,支持全文、结构化搜索和数据分析,具备优秀的扩展性。文中介绍了其核心功能,包括全文搜索、结构化搜索、分析和可扩展性。详细步骤涉及安装配置、数据准备、创建索引、导入数据、构建查询及结果处理。Elasticsearch凭借其高效性能和灵活性,成为企业全文搜索的首选解决方案。
|
4天前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
62 2
|
4天前
|
安全 搜索推荐 定位技术
一张图30个知识点,全方位认知 Elasticsearch 技术发展
一张图30个知识点,全方位认知 Elasticsearch 技术发展
22 3
|
4天前
|
人工智能 程序员 开发者
Elasticsearch 中文社区的转型后,搜索人怎么破局?
Elasticsearch 中文社区的转型后,搜索人怎么破局?
15 0
|
4天前
|
人工智能 Java API
如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?
如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?
15 0
|
4天前
|
存储 机器学习/深度学习 API
高维向量搜索:在 Elasticsearch 8.X 中利用 dense_vector 的实战探索
高维向量搜索:在 Elasticsearch 8.X 中利用 dense_vector 的实战探索
26 0
高维向量搜索:在 Elasticsearch 8.X 中利用 dense_vector 的实战探索
|
8月前
|
自然语言处理 分布式计算 Java
基于OpenSearch向量检索版和智能问答版搭建企业专属对话搜索系统
本文将介绍如何使用OpenSearch向量检索版和智能问答版,搭建灵活自定义的企业专属对话搜索系统。
1891 1
|
8月前
|
Web App开发 自然语言处理 搜索推荐
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
515 0
|
4天前
|
自然语言处理 搜索推荐 开发者
OpenSearch 智能问答实验室上线,支持免费体验对话式问答搜索
本文介绍OpenSearch 智能问答实验室上线的场景功能体验。
938 0
|
11月前
|
存储 数据采集 人工智能
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
阿里云OpenSearch再推面向企业开发者的PaaS方案:基于OpenSearch向量检索版,为企业开发者提供性能表现优秀、性价比优异的向量检索服务,并提供与大模型结合脚本工具,用户可在使用能力可靠的向量检索服务的同时,自由选择文档切片方案、向量化模型、大语言模型。
15150 1
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索

热门文章

最新文章