Py学习  »  Elasticsearch

Elasticsearch、Open Distro、OpenSearch 和 Easysearch 到底啥区别?

小哈学Java • 8 月前 • 246 次点击  


👉 欢迎加入小哈的星球,你将获得: 专属的项目实战(多个项目) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《Spring AI 项目实战》正在更新中..., 基于 Spring AI + Spring Boot 3.x + JDK 21;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍演示地址:http://116.62.199.48:7070/
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;
  • 专栏阅读地址:https://www.quanxiaoha.com/column

截止目前, 累计输出 100w+ 字,讲解图 4013+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有4000+小伙伴加入

图片


unsetunset一、先说结论unsetunset

Open Distro 已经不更新了,开发团队都转到 OpenSearch 去了。

亚马逊搞了个 Elasticsearch/Kibana 的开源分支。老读者可能会奇怪,他们不是从 2019 年 2 月就开始搞 Open Distro 了吗?怎么又来个 OpenSearch?

再说国内,随着信创政策推进,Elasticsearch 许可证变更,很多国内公司开始担心合规问题。这时候国产的 Easysearch 出现了。

咱们今天就把这几个项目捋一捋,看看它们之间到底有啥区别。

unsetunset二、Open Distro:给 Elasticsearch 加功能unsetunset

2.1 先说它是啥

Open Distro 出现得比较早。

说白了,它就是原汁原味的 Elasticsearch,只不过亚马逊在上面加了一堆功能插件

就像你买了个毛坯房,Open Distro 帮你装修好了,加了家具家电,但房子本身还是那个房子。

2.1 亚马逊 AWS 公司加了哪些东西

2.1.1 安全认证

以前 Elasticsearch 的安全功能要付费。Open Distro 直接给你免费的:

  • 想用 SAML? 没问题
  • 公司有 LDAP/AD? 直接对接
  • 要单点登录? 支持
  • Kerberos 认证? 也行

2.1.2 告警功能

写个查询语句,设个阈值或者自定义脚本,达到条件就发通知。

短信、邮件、钉钉、企业微信,想怎么通知都行。

比如:当错误日志超过 100 条/分钟,立马发短信给运维

2.1.3 K-NN 算法

这玩意儿是用来做最近邻搜索的。

说人话就是:你有几十亿条数据,想快速找出"最相似"的那些,K-NN 能帮你搞定。

比如推荐系统、图片搜索,都用得上。

2.1.4 索引管理

以前管索引得写脚本或者手动操作。现在在 Kibana 界面上就能搞定:

  • 索引超过 30 天? 自动删除
  • 索引太大了? 自动归档
  • 定期备份? 设个策略就行 再也不用担心磁盘爆满了。

2.1.5 性能监控

集群挂了的时候,你最需要的就是监控数据。

但问题是,集群挂了监控也跟着挂。

Open Distro 的性能管理器是独立运行的,集群挂了它还能告诉你哪里出问题了。

2.1.6 SQL 接口

又是 SQL!

说实话,每个非关系型数据库都要搞个 SQL 接口,真不知道为啥。

不过对于习惯写 SQL 的同学来说,确实方便。

2.2 Open Distro 遇到了啥问题

亚马逊本来想让 Open Distro 跟着 Elasticsearch 官方一起更新。

但是,Elastic 公司在代码里加了很多"检查机制",就是不让你用 Open Distro。

双方撕破脸了。

OpenSearch 的开发者 Kyle 说得很直白:Open Distro 就是开源社区对 X-Pack 的回应。

unsetunset三、OpenSearch:彻底分家unsetunset

3.1 为啥要 fork

Elasticsearch 不让用了,那就自己干呗。

OpenSearch 从 Elasticsearch 7.10 版本分支出来,自己单独发展。

这次不是加功能了,是把代码重构。

3.2 都改了些啥

3.2.1 改名字

代码里所有的 Elasticsearch、Kibana,全改成 OpenSearchOpenSearch Dashboards

听起来简单吧?

但你想想,几百万行代码,每个变量名、函数名、注释,都得改。

团队花了好几周才搞定。

3.2.2 删功能

这才是最狠的。把 Elasticsearch 里这些东西全删了:

  • X-Pack:Elastic 公司的商业功能包
  • 许可证检查:不让你用的那些代码
  • 回传数据:向 Elastic 服务器发使用统计

3.2.3 Beats 不能用了

X-Pack 删了,那些依赖 X-Pack 的工具也用不了了。

想用 Beats 收集 Netflows、F5、CoreDNS 日志?

对不起,Beats 会检查你的 Elasticsearch 有没有 X-Pack 许可证,没有就不干活。

解决办法: 换其他日志收集工具,比如 fluentd、logstash。

3.2.4 把 Open Distro 的功能搬过来

Open Distro 加的那些好东西,OpenSearch 全要了。

安全认证、告警、K-NN、索引管理,一个不落。

3.3 X-Pack 到底是个啥

X-Pack 就是当年这场"战争"的导火索。熟悉 Elastic 发展历史的小伙伴,应该对 X-pack 功能非常熟悉。早期版本需要单独安装这个插件的哦。你还记得吗?

Elastic 公司说:我开源,但我用的是 Elastic License。终端用户免费用,但如果你是云厂商,想卖 Elasticsearch 服务,得给我交钱。

亚马逊不乐意了:我也为 Elasticsearch 贡献代码啊,凭啥要给你交钱?

于是就分家了。

3.4 关于"回传数据"

Elastic 在代码里埋了点,会把你的使用情况发回去。

听起来像监控用户? 其实不是,大家可以放心。 Elastic 拿这些数据来改进产品。比如发现很多人在做范围查询,那就优化范围查询的性能。

这个功能可以关,但 OpenSearch 直接把相关代码全删了。

unsetunset四、Easysearch:国产替代方案 unsetunset

4.1 为啥要搞国产化

2021 年,Elasticsearch 把开源协议从 Apache 2.0 改成 SSPL。

SSPL 限制很多,简单说就是:如果你用 Elasticsearch 做云服务,得把你的整个技术栈都开源。

这对国内大型云厂商来说,阿里云、腾讯云估计可以。中小企业,基本不可能。

再加上:

  • Elastic 公司退出中国直销
  • 信创政策要求关键系统用国产软件
  • 技术支持响应慢,时差都对不上,国产化需求就来了。

Easysearch 就是在这个背景下,由极限科技(INFINI Labs)团队推出的。

4.2 技术上是怎么搞的

Easysearch 也是从 Elasticsearch 7.10 分支出来的。

但跟 OpenSearch 不一样,Easysearch 是针对国内场景优化的:

  • 中文处理
  • 信创适配
  • 性能调优
  • 简化运维 
  • 同时还在跟进 Lucene 的最新版本,不是 fork 了就不管。

4.3 国产化 Easyearch 六大优势

4.3.1 轻量级

安装包不到 60 MB。

Elasticsearch 的安装包有 500 多 MB,差了快 10 倍。

装起来快,启动也快,资源占用还少。

内存和 CPU 占用比 Elasticsearch 低 10%-30%。

对于小团队来说,省钱省服务器。

4.3.2 跨平台

这个"跨平台"不是说 Windows、Linux、macOS。 

是说国产 CPU 和操作系统:

  • 龙芯、飞腾、鲲鹏、海光
  • 麒麟、统信、中标麒麟 都能跑,而且都拿到了官方认证。

信创项目用这个,合规没问题。

4.3.3 性能强

官方拿 Nginx 日志做压测:

写入性能比 Elasticsearch 7.10.2 快 40%-70%

存储压缩率高 2.5-3 倍。

同样的数据,Easysearch 占的磁盘空间只有 Elasticsearch 的三分之一。

这意味着啥?硬件成本能省一大笔。

4.3.4 稳定

Elasticsearch 有不少 bug,比如:

  • 内存泄漏,跑着跑着就 OOM 了
  • 集群卡顿,查询变慢
  • 节点掉线,数据丢失 Easysearch 团队修了一大堆内核问题,在生产环境跑得更稳。

4.3.5 安全

Elasticsearch 的安全功能要付费(X-Pack)。

Easysearch 默认就有,而且是企业级的:

  • LDAP/AD 集成
  • 索引级权限控制
  • 文档级权限控制
  • 字段级权限控制

比如:运营只能看订单数据,技术只能看日志数据,互相看不到。

4.3.6  兼容性好

API 和数据格式跟 Elasticsearch 7.x 一样。 迁移的时候:

  • 代码不用改
  • 查询语句不用改
  • SDK 不用换 直接把连接地址改成 Easysearch 的就行。

4.3.7 中文优化

用过 Elasticsearch 的都知道,中文分词得装 ik 插件。

Easysearch 开箱即用,ik、pinyin 都内置了。

而且针对中文做了很多优化:

  • 同义词处理
  • 短语匹配
  • 模糊查询 搜"手机"能出来"移动电话",搜"北京"能出来"帝都",这些都不用你自己配。

4.4 企业级功能

除了基础搜索,Easysearch 还有:

  • 向量搜索(KNN):做推荐、语义搜索
  • 异步搜索:大数据量查询不阻塞
  • 数据脱敏:敏感信息自动隐藏
  • 可搜索快照:历史数据压缩存储,用的时候再解压
  • 审计日志:谁查了啥一目了然
  • 冷热分离:热数据放 SSD,冷数据放机械盘
  • 生命周期管理:自动归档、删除旧数据 

这些在 Elasticsearch 里部分为付费功能,要么得自己开发。

Easysearch 全给你。

4.5 迁移和运维

怎么迁移??

Easysearch 提供了"极限网关"工具:

  • 全量同步:把老数据搬过来
  • 增量同步:实时同步新数据 业务不用停,等同步完了,改个连接地址,切过去就行。

如果你有 Elasticsearch 的快照备份,也能直接恢复到 Easysearch。

4.6 怎么运维

1.15 版本开始,Easysearch 自带 Web UI(类似简化版 Kibana):

  • 索引管理
  • 查询调试
  • 权限配置
  • 性能监控

都在界面上操作,不用敲命令行。

还有一键部署脚本,基本不用手动改配置。 分片自动均衡,节点自动恢复,小团队也能稳定运行。

4.7 市场认可度

Easysearch 是国内第一个通过"搜索型数据库产品能力测试"的产品。

在墨天轮搜索型数据库排行榜上,长期排第一。

数据来源:https://www.modb.pro/dbRank

4.8 能用在哪些场景

要是 Elasticsearch 能用的场景,Easysearch 都能用:

  • 日志分析:ELK 方案
  • 业务搜索:电商、知识库
  • 实时分析:大屏、报表
  • 知识图谱:关系挖掘
  • 监控告警:APM、链路追踪 
  • 支持水平扩展,加节点就能扩容,已经有客户跑了 PB 级数据。

unsetunset五、对比一下unsetunset

对比项
Elasticsearch
OpenSearch
Easysearch
开源协议
SSPL(限制多)
Apache 2.0
占未开源
中文分词
装插件
装插件
开箱即用
安装包
~500MB
~500MB
<60MB
国产适配
没有
没有
全面支持
写入性能
基准
基准
快40%-70%
存储压缩
基准
基准
省2.5-3倍
技术支持
国外时差
社区
本土团队
信创认证
没有
没有
已通过

Elasticsearch 在 7.11 版本后改用三重许可证AGPL-3.0、SSPL、Elastic License 2.0),其中核心限制来自 SSPL 和 Elastic License 2.0,它们禁止将 Elasticsearch 作为托管服务提供给第三方(比如不能像 AWS 那样提供 Elasticsearch 云服务)。

虽然名义上开源,但实际上是针对云服务商的"防御性许可证",这也是为什么 AWS 分叉出 OpenSearch(保持 Apache 2.0 完全开源)以及国内出现 Easysearch 等替代方案的根本原因。

六 四者关系图

简单说:

  • Open Distro: 在 Elasticsearch 上加东西,现在不更新了

  • OpenSearch: fork 了 Elasticsearch,自己单干

  • Easysearch: 也 fork 了 Elasticsearch,针对国内优化

unsetunset七、怎么选unset unset

7.1 继续用 Elasticsearch

如果你:

  • 开源版本足够解决业务问题
  • 已经用了 X-Pack 商业功能,迁移成本高
  • 没有国产化要求
  • 有预算买 Elastic 的技术支持

那就继续用。

7.2 选 OpenSearch

如果你:

  • 想用开源的,避免许可证风险
  • 国际化部署,跟 AWS 生态结合
  • 需要活跃的国际社区 那就选 OpenSearch。

7.3 选 Easysearch

如果你:

  • 有信创要求,必须用国产软件
  • 中文业务场景多
  • 想省硬件成本,追求更高性能
  • 需要本土技术支持,响应快
  • 小团队,希望简化运维 那就选 Easysearch。

unsetunset八、未来趋势unsetunset

8.1 OpenSearch 的方向

  • 坚持开源,不走回头路
  • 亚马逊持续投入
  • 国际社区越来越大

8.2 Easysearch 的机会

国内市场需求明确:

  • 信创政策持续推进
  • 数据安全和自主可控
  • 许可证合规要求 Easysearch 未来可能:
  • 社区建设:吸引更多开发者
  • 向量搜索:结合大模型,做语义搜索
  • AI 融合:跟 AI 应用深度集成
  • 国际化:拓展海外市场

8.3 整体趋势

搜索引擎市场会越来越分化:

  • 数据主权意识提高
  • 开源协议分歧加大
  • AI 和搜索结合紧密

没有一个方案适合所有场景。 选哪个,得看:

  • 你的业务需求
  • 合规要求
  • 团队技术能力
  • 预算

unsetunset九、总结unset unset

Elasticsearch 分叉后形成三大分支:

  • Open Distro 仅加功能后停止更新;
  • OpenSearch 彻底独立,走向国际开源;
  • Easysearch 专注国产替代与本土优化。 二者均旨在摆脱 Elastic 许可证限制。 
  • OpenSearch 主打国际化生态,Easysearch 强调国产化适配。

对国内开发者:

  • 信创需求选 Easysearch,无要求且追求全球生态选 OpenSearch,深度绑定则续用 Elasticsearch。

技术演进、生态分化带来更多选择,利好开发者。

unsetunset十、相关资源unsetunset

10.1 官网

  • Elasticsearch: 
    https://www.elastic.co
  • OpenSearch: 
    https://opensearch.org
  • Easysearch: 
    https://infinilabs.cn/products/easysearch

10.2 文档

  • OpenSearch 文档: 
    https://opensearch.org/docs
  • Easysearch 文档: 
    https://infinilabs.cn/docs/latest/easysearch

10.3 国产化社区

  • 搜索客社区: 
    https://elasticsearch.cn
  • INFINI Labs 博客: 
    https://infinilabs.cn/blog

👉 欢迎加入小哈的星球,你将获得: 专属的项目实战(多个项目) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《Spring AI 项目实战》正在更新中..., 基于 Spring AI + Spring Boot 3.x + JDK 21;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍演示地址: http://116.62.199.48:7070/
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;
  • 专栏阅读地址:https://www.quanxiaoha.com/column

截止目前,累计输出 100w+ 字,讲解图 4013+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有4000+小伙伴加入

图片


图片
图片

1. 我的私密学习小圈子,从0到1手撸企业实战项目~

2. 天才用户取用户名为null,害我熬夜查到两点钟。。

3. 别再只会 mvn install 了!深入拆解 Maven 插件核心原理

4. MinIO 不再“开放”,RustFS 能否成为更优选择?

图片

最近面试BAT,整理一份面试资料Java面试BATJ通关手册 ,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持小哈呀,谢谢啦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189228