OpenSearch — 开源搜索的新选择 | 搜索百科(4)
大家好,我是 INFINI Labs 的石阳。
欢迎关注 《搜索百科》 专栏!每天 5 分钟,带你速览一款搜索相关的技术或产品,同时还会带你探索它们背后的技术原理、发展故事及上手体验等。
上一篇我们围观了 “流量明星” Elasticsearch — 从食谱搜索到 PB 级明星产品,从 Apache 2.0 到 SSPL 协议风波;今天我们来聊聊它的“分叉兄弟” OpenSearch。
引言
2021 年,当 Elasticsearch 宣布将其许可证从 Apache 2.0 变更为 SSPL/Elastic License 时,整个搜索社区为之震动。这一变更直接催生了一个新的开源分支 — OpenSearch。这个由 AWS 主导的项目不仅在短短几年内迅速发展成熟,更成为了许多企业在云原生环境下搜索解决方案的新选择。
OpenSearch 概述
OpenSearch 是从 Elasticsearch 7.10.2 分支而来的开源搜索与分析套件,由 AWS 主导开发并贡献给开源社区。OpenSearch 包括 OpenSearch(搜索引擎)和 OpenSearch Dashboards(可视化界面),完全兼容 Apache 2.0 协议,旨在为用户提供一个真正开源、社区驱动的搜索与分析解决方案。
- 首次发布:2021 年 4 月
- 最新版本:3.2.0(截止 2025 年 9 月)
- 开源协议:Apache License 2.0
- 主导企业:Amazon Web Services (AWS)
- 官方网址:https://opensearch.org/
- GitHub 仓库:https://github.com/opensearch-project
诞生故事:开源协议争议的产物
时间回到 2021 年 1 月,Elastic 公司宣布 Elasticsearch 从 7.11 版本起不再使用 Apache 2.0 协议,而改为 Elastic License 与 SSPL。这一决定立刻在社区和产业界引发巨大争议。
AWS(亚马逊云)作为 Elasticsearch 的重要用户与云服务提供商,不愿意被 Elastic 的商业条款所限制,随即牵头将 Elasticsearch 7.10 版本 fork 出来,并与 Kibana 一起重命名为 OpenSearch 与 OpenSearch Dashboards。
从此,开源世界分裂成了两条路线:
- Elastic 官方的 Elasticsearch + Kibana(带有商业许可)。
- 社区驱动的 OpenSearch + OpenSearch Dashboards(继续遵循 Apache 2.0 协议)。
这个分叉,既是开源协议之争的产物,也是云厂商与开源公司之间博弈的缩影。虽然初期被质疑过“是否真开源”,但经过数年的迭代,OpenSearch 已形成了相对独立的开发节奏和用户群体,插件和生态也逐渐丰富。
技术架构与特性
OpenSearch 是一个基于 Apache Lucene 的分布式搜索与分析引擎。在将数据添加到 OpenSearch 后,可以对其执行各种功能完备的全文搜索操作:按字段搜索、跨多个索引搜索、提升字段权重、按得分排序结果、按字段排序结果以及对结果进行聚合。
OpenSearch 的核心架构由集群、节点、索引、分片和文档组成。最高层是 OpenSearch 集群,它是由多个节点组成的分布式网络,每个节点会根据其类型负责不同的集群操作。数据节点负责存储索引(即文档的逻辑分组),并处理数据写入、搜索和聚合等任务。
每个索引会被划分为多个分片,分片包含主数据和副本数据。分片会分布在多台机器上,从而实现水平扩展,提升性能并高效利用存储资源。
OpenSearch vs Elasticsearch:详细对比
特性 | OpenSearch | Elasticsearch |
---|---|---|
许可证 | Apache 2.0(完全开源) | SSPL/Elastic License/AGPLv3 |
起始版本 | 基于 Elasticsearch 7.10.2 | 从 7.11 开始协议变更 |
社区治理 | 开放治理模式,由社区驱动 | 由 Elastic NV 公司主导 |
安全性 | 所有安全功能默认开源 | 部分高级安全功能需要付费 |
AI/向量检索 | 近年快速跟进,兼容性较好 | 原生支持,功能逐步增强 |
部署选择 | AWS OpenSearch Service / 自建 | Elastic Cloud / 自建 |
升级路径 | 从 Elasticsearch 7.x 平滑迁移 | 原生升级路径 |
社区活跃度 | 社区逐渐壮大,受到纯开源拥护者欢迎 | 用户基础庞大,但分裂带来争议 |
快速开始:5 分钟部署 OpenSearch
1. 使用 Docker 部署
# 拉取 OpenSearch 镜像
docker pull opensearchproject/opensearch:3.2.0
# 启动 OpenSearch 节点
docker run -d --name opensearch-node \
-p 9200:9200 -p 9600:9600 \
-e "discovery.type=single-node" \
-e "plugins.security.disabled=true" \
opensearchproject/opensearch:3.2.0
# 拉取 OpenSearch Dashboards
docker pull opensearchproject/opensearch-dashboards:3.2.0
# 启动 Dashboards
docker run -d --name opensearch-dashboards \
-p 5601:5601 \
-e "OPENSEARCH_HOSTS=http://opensearch-node:9200" \
opensearchproject/opensearch-dashboards:3.2.0
2. 验证安装
# 检查集群状态
curl -X GET "http://localhost:9200/"
出现如下结果说明安装成功。
3. 创建索引和搜索
# 索引文档
curl -X POST "http://localhost:9200/my-first-index/_doc" -H 'Content-Type: application/json' -d'
{
"title": "OpenSearch 入门指南",
"content": "这是我在 OpenSearch 中的第一个文档",
"timestamp": "2025-09-18T10:00:00"
}'
# 执行搜索
curl -X GET "http://localhost:9200/my-first-index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "第一个文档"
}
}
}'
4. 访问控制台
打开浏览器访问 http://localhost:5601 即可使用 OpenSearch Dashboards 界面。
结语
OpenSearch 的出现,是开源社区的一次“自救”。它不仅延续了 Elasticsearch 的核心功能,还代表了另一种治理模式:由云厂商和社区共同维护,保证了开源协议的延续。
在搜索技术的版图里,Elasticsearch 与 OpenSearch 的分叉,注定会成为一个重要的历史节点。未来,两者可能会继续竞争,也可能各自发展出独特的生态。
🚀 下期预告
下一篇我们将介绍 OpenSearch 的另一个兄弟 Easysearch,一个衍生自开源协议 Apache 2.0 的 Elasticsearch 7.10.2 版本的轻量级搜索引擎,作为一个 ES 国产替代方案,看看它如何以其极致的速度和易用性在国内搜索领域占据一席之地。
💬 三连互动
- 您是否考虑过从 Elasticsearch 迁移到 OpenSearch?
- 在开源协议方面,您更倾向于哪种模式?Apache 2.0 还是 Elastic 的多重许可?
- 对于云厂商与开源项目之间的关系,您有什么看法?
对搜索技术感兴趣的朋友,也欢迎加我微信(ID:lsy965145175)备注“搜索百科”,拉你进 搜索技术交流群,一起探讨与学习!
✨ 推荐阅读
🔗 参考资源

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
使用 LangExtract 和 Elasticsearch
作者:来自 ElasticJeffrey Rengifo 亲身体验 Elasticsearch:深入了解我们的示例笔记本,开始免费试用云,或立即在本地计算机上试用 Elastic。 LangExtract是由 Google 创建的开源Python 库,可帮助使用多个 LLM 和自定义指令将非结构化文本转换为结构化信息。与单独使用 LLM 不同,LangExtract 提供结构化且可追溯的输出,将每个提取链接回原始文本,并提供用于验证的可视化工具,使其成为在不同上下文中提取信息的实用解决方案。 当您想要将非结构化数据(例如合同、发票、账簿等)转换为定义的结构,使其可搜索和过滤时,LangExtract 非常有用。例如,对发票的费用进行分类,提取合同中的当事人,甚至检测书中某个段落的人物的情绪。 LangExtract 还提供长上下文处理、远程文件加载、提高召回率的多次传递以及并行化工作的多个工作程序等功能。 用例 为了演示 LangExtract 和 Elasticsearch 如何协同工作,我们将使用一个包含 10 份不同类型合同的数据集。这些合同包含标准数据,如费用、金额、日期、期限...
-
下一篇
uni-ai:让你的App快速接入AI
不管你的App是原生开发,还是基于某个跨端框架,都可以试试uni-ai。 uni-ai让你的 App 1 天接入 DeepSeek等AI模型,2 天上线全平台原生 AI 聊天功能! 在 AI时代,每个App都在思考AI化。 内置AI聊天(AI问答)成为众多App的基本需求。但当你准备动手打造一个像 ChatGPT、DeepSeek 那样流畅的AI客户端时,很快就会发现,技术挑战层出不穷,比如:webview 集成AI聊天虽然快捷,但体验相比原生,着实有差距。 如果不基于webview,采用原生开发,那么需要在Android、iOS、鸿蒙等平台解决如下问题: (1)流式网络请求:大模型流式返回的token,需要在手机端流式接收。 (2)缺少全平台效果一致的markdown解析器 (3)markdown流式解析复杂:传统应用场景下 markdown 解析都是全文解析。而随着 ai 的发展,流式回复的内容越来越长,需要持续跟踪上下文状态,判断当前内容是否在代码块/表格/列表等元素中,解析速度必须跟上流式传输速度,否则会明显卡顿; (4)全编程语言代码高亮:当AI回复编程语言时,几十种编程语...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- 面试大杂烩
- Windows10,CentOS7,CentOS8安装Nodejs环境