【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch
开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch
- 1.历史发展
- 2.OpenSearch 与 Elasticsearch 相同点
- 3.OpenSearch 与 Elasticsearch 不同点
- 3.1 版本大不同
- 3.2 许可证不同
- 3.3 社区不同
- 3.4 功能不同
- 3.5 安全性不同
- 3.6 性能不同
- 3.7 价格不同
- 3.8 两者可相互导入
- 4.总结
1.历史发展
在 2010 年以 Apache 2.0 2.0 2.0 开源协议发布后,Elasticsearch 迅速成为全球最受欢迎的企业 搜索引擎。
Elasticsearch 常与 Logstash 和 Kibana 一起部署,这一组合被称为 Elasitc Stack,用于启用日志分析用例,包括应用可观察性、安全日志分析和理解用户行为。
2015 年,亚马逊利用这一开源协议推出了 Amazon Elasticsearch Service
(Amazon ES
),这是一个云托管服务,允许 AWS 客户启动可伸缩的 Elasticsearch 集群,连接数据源到集群端点,并在云中加载、处理、分析或可视化数据。
然而,Elastic 公司最终对亚马逊使用其产品和商标提出了反对,并在 2019 年因涉嫌商标侵权和虚假广告对这家科技巨头提起诉讼。
🚀《Elastic 与 Amazon 就商标侵权诉讼达成协议》
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
2.OpenSearch 与 Elasticsearch 相同点
OpenSearch 是从 Elasticsearch 的一个相对高级的分支版本开发而来的,所以两个应用在搜索、分析和仪表盘的所有基本功能上都是相同的。
OpenSearch 和 Elasticsearch 都提供了 多租户架构 和 全文搜索、分布式搜索 能力的分析引擎。
因此,两者都可以用来满足 网站搜索、企业搜索 和 日志分析 的用例。
3.OpenSearch 与 Elasticsearch 不同点
在比较 OpenSearch 和 Elasticsearch 时,主要有以下几点不同:
- 版本
- 许可证
- 社区
- 功能
- 安全性
- 性能
- 价格
3.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
系列。
3.2 许可证不同
在 2021 年之前,Elasticsearch 在 Apache 2.0 2.0 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 许可证双重授权 |
3.3 社区不同
OpenSearch 和 Elasticsearch 都拥有健康、活跃和忠诚的社区,因此两个搜索引擎都不太可能在功能供给上落后太远或很快不再受支持。
- Elasticsearch 社区论文比较成熟,官方论坛地址:https://discuss.elastic.co/。
- OpenSearch 官方论坛地址:https://forum.opensearch.org/。
我看了一下,OpenSearch 论坛问题数和回复数都还没有形成规模。
3.4 功能不同
亚马逊最初分支 Elasticsearch 7.10.2
创建 OpenSearch 时,首先必须删除所有不兼容 Apache 2.0 2.0 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 承诺提供长期支持的版本 |
Elastic GitHub:https://github.com/elastic
OpenSearch GitHub:https://github.com/opensearch-project
3.5 安全性不同
Elasticsearch 和 OpenSearch 都配备了许多相同的安全功能。
但是,这些功能都包含在 OpenSearch 中,而某些功能在 Elasticsearch 中只对付费客户可用。
如 OpenSearch 官网介绍:其已缺省(系统默认)安全。
Elastic 付费功能清单列表:https://www.elastic.co/cn/pricing
3.6 性能不同
如果你正在进行大规模的搜索操作,你可能会对这两种搜索引擎中哪一个能提供更快查询感兴趣。
Elastic 最近发表了一篇博客,标题为 “Elasticsearch vs. OpenSearch:揭开性能差距”。
🚀 文章地址:https://www.elastic.co/cn/blog/elasticsearch-opensearch-performance-gap
Elastic 官网文档强调:自从 Elasticsearch 的一个早期版本问世以来,OpenSearch 就没有跟上创新的步伐。自 OpenSearch GA 以来,Elasticsearch 在功能创新方面已经超过了 4 4 4 倍。
Elastic 官方对比强调,如下图所示 —— Elasticsearch 在各个关键性能指标上的优势,并且更加节约存储资源。
- 文本查询(
Text Querying
):Elasticsearch 在文本查询性能上比 OpenSearch 快 76 % 76\% 76%。 - 排序(
Sorting
):在排序操作中,Elasticsearch 比 OpenSearch 快 58 % 58\% 58%。 - 日期直方图(
Date Histogram
):在进行日期直方图聚合时,Elasticsearch 显示出比 OpenSearch 快 81 % 81\% 81% 的性能。 - 条款(
Terms
):在处理条款查询时,Elasticsearch 的性能比 OpenSearch 快 61 % 61\% 61%。 - 范围(
Ranges
):在范围查询方面,Elasticsearch 展现出比 OpenSearch 快 42 % 42\% 42% 的性能。 - Elasticsearch 使用的 存储空间 比 OpenSearch 少 37 % 37\% 37%。
这意味着 Elasticsearch 在处理同等任务时,不仅查询速度更快,而且在存储效率上也更优。
如下截图参见博客:https://www.elastic.co/cn/blog/migrating-1-billion-log-lines-opensearch-elasticsearch
左边是 Opensearch,右边是 Elasticsearch。明显对比可知:Elasticsearch 较 OpenSearch 节省了 23 % 23\% 23% 的存储空间。
3.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
3.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/
4.总结
OpenSearch 已发布 3 年多,Elasticsearch 和 OpenSearch 已存在很多不同,但它们最终都源自同一个版本:Elasticsearch 7.10.2
。
我们不对 Elasticsearch 和 Amazon OpenSearch 之间的选型提供直接的推荐,因为最合适的选择将取决于项目或产品独特的需求和环境。但,文中数据相信会给你提供参考。
建议读者根据自己的具体情况和偏好做出决定,并考虑功能需求、成本效益、长期的技术支持或自身是否具备架构及性能调优等能力。
相关文章:
【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch
开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…...
欧拉openEuler 22.03 LTS-部署k8sv1.03.1
1.设置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…...
老年生活照护实训室:为养老服务业输送专业人才
本文探讨了老年生活照护实训室在养老服务业专业人才培养中的关键作用。通过详细阐述实训室的功能、教学实践、对学生能力的培养以及面临的挑战和解决方案,强调了其在提升人才素质、满足行业需求方面的重要性,旨在为养老服务业的可持续发展提供有力的人才…...
go语言中使用WaitGroup和channel实现处理多线程问题
WaitGroup 背景 如果将一个任务分为任意个小任务,并且不关心小任务的执行顺序,并且希望等待全部的小任务执行完成后再去操作后面的逻辑,那我推荐你用sync.WaitGRoup 使用方法 比如,有一个任务需要执行 3 个子任务,…...
Open3D 计算点云的平均密度
目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中,点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集,低密度区域表示点云较稀疏。计算…...
C语言之数据在内存中的存储(1),整形与大小端字节序
目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的,涉及到大小端字节序这一概念,还有如何判断大小端,希望对大…...
B端全局导航:左侧还是顶部?不是随随便便,有依据在。
一、什么是全局导航 B端系统的全局导航是指在B端系统中的主要导航菜单,它通常位于系统的顶部或左侧,提供了系统中各个模块和功能的入口。全局导航菜单可以帮助用户快速找到和访问系统中的各个功能模块,提高系统的可用性和用户体验。 全局导航…...
什么是海外仓管理自动化?策略及落地实施步骤指南
作为海外仓的管理者,你每天都面临提高海外仓运营效率、降低成本和满足客户需求的问题。海外仓自动化管理技术为这些问题提供了不错的解决思路,不过和任何新技术一样,从策略到落地实施,都有一个对基础逻辑的认识过程。 今天我们整…...
自定义控件三部曲之绘图篇(六)Paint之函数大汇总、ColorMatrix与滤镜效果、setColorFilter
在自定义控件的绘图篇中,Paint 类是核心的组成部分之一,它控制了在 Canvas 上绘制的内容的各种属性,包括颜色、风格、抗锯齿、透明度等等。下面将详细介绍 Paint 的主要功能以及如何使用 ColorMatrix 和 setColorFilter 来实现滤镜效果。 Pa…...
请写sql满足业务:找到连续登录3天以上的用户
为了找到连续登录超过 3 天的用户,我们可以使用 SQL 窗口函数和递归查询来实现。假设有一个 user_logins 表,包含以下字段: user_id(用户ID)login_date(登录日期) 假设 login_date 是 DATE 类…...
fatal error: apriltag/apriltag.h: No such file or directory 的 参考解决方法
文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04,ROS-Noteic 一、问题描述 自己编译ROS程序的时候遇到如下问题: fatal error: apriltag/apriltag.h: No such file or directory9 | #include &…...
C++继承(一文说懂)
目录 一: 🔥继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二:🔥基类和派生类对象赋值转换三:🔥继承中的作用域四:&a…...
卷积神经网络可视化的探索
文章目录 训练LeNet模型下载FashionMNIST数据训练保存模型 卷积神经网络可视化加载模型一个测试图像不同层对图像处理的可视化第一个卷积层的处理第二个卷积层的处理 卷积神经网络是利用图像空间结构的一种深度学习网络架构,图像在经过卷积层、激活层、池化层、全连…...
RxJava学习记录
文章目录 1. 总览1.1 基本原理1.2 导入包和依赖 2. 操作符2.1 创建操作符2.2 转换操作符2.3 组合操作符2.4 功能操作符 1. 总览 1.1 基本原理 参考文献 构建流:每一步操作都会生成一个新的Observable节点(没错,包括ObserveOn和SubscribeOn线程变换操作…...
Spring Boot Vue 毕设系统讲解 3
目录 项目配置类 项目中配置的相关代码 spring Boot 拦截器相关知识 一、基于URL实现的拦截器: 二、基于注解的拦截器 三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿: 项目配置类 项目中配置的相关代码 首先定义项目认…...
Spring Boot对接大模型:实战价值与技巧
Spring Boot对接大模型:实战价值与技巧 随着大数据和人工智能技术的飞速发展,大模型(Large-scale Models)在各个行业中的应用越来越广泛。为了充分利用这些大模型的能力,我们需要将其与现有的应用框架进行对接。Sprin…...
完美解决NameError: name ‘file‘ is not defined的正确解决方法,亲测有效!!!
完美解决NameError: name ‘file’ is not defined的正确解决方法,亲测有效!!! 亲测有效 完美解决NameError: name file is not defined的正确解决方法,亲测有效!!!报错问题解决思路…...
Witness Table 的由来
“Witness Table” 是 Swift 中的一个术语,源于编译原理和类型系统的概念。它被用来表示一种机制,通过这个机制,编译器可以确保某个类型确实实现了它声明遵循的协议中的所有方法和属性。下面是对这个术语的详细解释: 1. 术语来源…...
Python 3 AI 编程助手
Python 3 AI 编程助手 Python 3 是当前最流行的编程语言之一,特别是在人工智能(AI)领域。Python 3 的语法简洁明了,拥有丰富的库和框架,使其成为开发 AI 应用程序的首选语言。本文将介绍 Python 3 在 AI 编程中的关键特性、常用库以及如何使用 Python 3 构建 AI 应用程序…...
【nginx】nginx的配置文件到底是什么结构,到底怎么写?
背景:我window中下载了一个nginx,想要通过nginx来对本地的两个项目做动态代理,但是没想到下载启动都没遇见什么问题,但是在配置nginx.conf配置文件时,遇见了很多问题,查了好久没查到什么特别有用的内容&…...
基于React 实现井字棋
一、简介 这篇文章会基于React 实现井字棋小游戏功能。 二、效果演示 三、技术实现 import {useEffect, useState} from "react";export default (props) > {return <Board/> }const Board () > {let initialState [[, , ], [, , ], [, , ]];const [s…...
文件的换行符,Windows 的 CRLF 和 Linux 的 LF
文件的换行符,Windows 的 CRLF 和 Linux 的 LF,在开发项目时用哪种比较合适? 在开发项目时选择文件的换行符(Windows 的 CRLF 或 Linux 的 LF),通常取决于几个因素,包括项目的运行环境、项目的…...
怎样优化 PostgreSQL 中对日期时间范围的模糊查询?
文章目录 一、问题分析(一)索引未有效利用(二)日期时间格式不统一(三)复杂的查询条件 二、优化策略(一)使用合适的索引(二)规范日期时间格式(三&a…...
B端设计:任何不顾及用户体验的设计,都是在装样子,花架子
B端设计是指面向企业客户的设计,通常涉及产品、服务或系统的界面和功能设计。与C端设计不同,B端设计更注重实用性和专业性,因为它直接影响企业的效率和利益。 在B端设计中,用户体验同样至关重要。不顾及用户体验的设计只是空洞的表…...
React@16.x(51)路由v5.x(16)- 手动实现文件目录参考
作为前面几篇文章的参考: 实现 Router实现 Route实现 Switch实现 withRouter实现 Link 和 NavLink 以上。...
从零开始读RocketMq源码(二)Message的发送详解
目录 前言 准备 消息发送方式 深入源码 消息发送模式 选择发送方式 同步发送消息 校验消息体 获取Topic订阅信息 高级特性-消息重投 选择消息队列-负载均衡 装载消息体发送消息 压缩消息内容 构造发送message的请求的Header 更新broker故障信息 异步发送消息 …...
怎样优化 PostgreSQL 中对布尔类型数据的查询?
文章目录 一、索引的合理使用1. 常规 B-tree 索引2. 部分索引 二、查询编写技巧1. 避免不必要的类型转换2. 逻辑表达式的优化 三、表结构设计1. 避免过度细分的布尔列2. 规范化与反规范化 四、数据分布与分区1. 数据分布的考虑2. 表分区 五、数据库参数调整1. 相关配置参数2. 定…...
mysql在linux系统下重置root密码
mysql在linux系统下重置root密码 登录服务器时候mysql密码忘记了,没办法只能重置,找了一圈,把行之有效的方法介绍在这里。 错误展示: 我还以为yes就可以了呢,这是不行的意思。 关掉mysql服务 sudo systemctl stop …...
设计模式探索:观察者模式
1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象会相应地作出反应。 在观察者模式中有如下角色: Subject(抽象主题/被观察者…...
Perl语言入门到高级学习
Perl语言介绍 Perl,全称为Practical Extraction and Report Language,即“实用报表提取语言”,是一种高级、通用、直译式、动态的编程语言。Perl最初由Larry Wall设计,并于1987年12月18日首次发布。经过多年的不断发展和更新,Perl已经成为一种功能丰富且应用广泛的计算机程…...
网站建设去超速云建站/如何让别人在百度上搜到自己公司
Linux启动时出现乱码的解决方法.doc (2页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分下面是我遇到过的问题并已解决,方法可行:Linux启动时出现乱码的…...
可以做兼职的网站有哪些工作/软文新闻发布网站
DNS的正向解析含义: 自己维护一个域名,当别人访问这个域名时,你自己的主机要开启DNS缓存功能,可以解析出它的IP地址。 DNS正向解析配置:(服务机:172.25.254.100) 维护的域名为&#…...
微信小程序如何生成二维码/化工seo顾问
对于创新,有很多偏见和误解。德鲁克在《创新与企业家精神》中指出,最常见的误解是认为大企业无法创新。大企业成了官僚作风和保守主义的代名词,事实上官僚和保守在小企业中同样普遍,只是因为企业太小,没有引起太多关注…...
wordpress 手机验证/淄博网站seo
前言:前几天写了篇关于PullToRefresh控件的DEMO导入的博客,但由于当时没有用到,所以就没细往下讲,现在开始到了实战阶段,用到了PullToRefresh的listView样式,网上有讲的,但讲的不多,…...
网站开发要花多少钱/百度竞价排名价格查询
在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘。 显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘。 下图所示的特殊棋盘为 k2 时 16 个特殊棋盘中的一个。 在棋盘覆盖问题…...
使用vue做的商城网站/如何做网络销售平台
/** POJ 2488* DFS进行遍历就好,记录走过的路径,只要不重复地走过p*q个方格就行了(结束条件) */#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int Max 30; int kase;int p,q;int vi…...