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

简介: 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进阶助手

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


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
2月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
2月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 9.1.5 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.1.5 (macOS, Linux, Windows) - 分布式搜索和分析引擎
321 0
|
3月前
|
JSON 监控 Java
Elasticsearch 分布式搜索与分析引擎技术详解与实践指南
本文档全面介绍 Elasticsearch 分布式搜索与分析引擎的核心概念、架构设计和实践应用。作为基于 Lucene 的分布式搜索引擎,Elasticsearch 提供了近实时的搜索能力、强大的数据分析功能和可扩展的分布式架构。本文将深入探讨其索引机制、查询 DSL、集群管理、性能优化以及与各种应用场景的集成,帮助开发者构建高性能的搜索和分析系统。
330 0
|
8月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
2245 1
|
7月前
|
存储 安全 Linux
Elasticsearch Enterprise 9.0 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.0 (macOS, Linux, Windows) - 分布式搜索和分析引擎
332 0
|
7月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 8.18 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 8.18 (macOS, Linux, Windows) - 分布式搜索和分析引擎
297 0
|
11月前
|
人工智能 自然语言处理 搜索推荐
云端问道12期实操教学-构建基于Elasticsearch的企业级AI搜索应用
本文介绍了构建基于Elasticsearch的企业级AI搜索应用,涵盖了从传统关键词匹配到对话式问答的搜索形态演变。阿里云的AI搜索产品依托自研和开源(如Elasticsearch)引擎,提供高性能检索服务,支持千亿级数据毫秒响应。文章重点描述了AI搜索的三个核心关键点:精准结果、语义理解、高性能引擎,并展示了架构升级和典型应用场景,包括智能问答、电商导购、多模态图书及商品搜索等。通过实验部分,详细演示了如何使用阿里云ES搭建AI语义搜索Demo,涵盖模型创建、Pipeline配置、数据写入与检索测试等步骤,同时介绍了相关的计费模式。
384 3
|
11月前
|
人工智能 算法 API
构建基于 Elasticsearch 的企业级 AI 搜索应用
本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。
436 1
|
8月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
1601 64
|
7月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
3923 0