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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 自然语言处理 BI
|
22天前
|
存储 运维 监控
Elasticsearch Serverless 高性价比智能日志分析关键技术解读
本文解析了Elasticsearch Serverless在智能日志分析领域的关键技术、优势及应用价值。
Elasticsearch Serverless 高性价比智能日志分析关键技术解读
|
5天前
|
存储 监控 安全
|
4天前
|
存储 数据采集 监控
开源日志分析Elasticsearch
【10月更文挑战第22天】
25 5
|
22天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
166 2
|
26天前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
156 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
2月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
159 7
|
1月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
68 0
|
2月前
|
JSON 监控 Java
Elasticsearch 入门:搭建高性能搜索集群
【9月更文第2天】Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 构建。它能够处理大量的数据,提供快速的搜索响应。本教程将指导你如何从零开始搭建一个基本的 Elasticsearch 集群,并演示如何进行简单的索引和查询操作。
187 3
|
3月前
|
存储 人工智能 安全
保障隐私的Elasticsearch AI搜索解决方案
【8月更文第28天】随着大数据和人工智能技术的发展,搜索引擎在日常生活中扮演着越来越重要的角色。然而,用户隐私保护成为了一个不容忽视的问题。本文将探讨如何在确保用户数据隐私的同时,利用Elasticsearch实现智能搜索功能。我们将介绍一种综合方案,该方案结合了加密技术、差分隐私、匿名化处理以及安全多方计算等方法,以保障用户数据的安全性
146 0