搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎

作者:极限实验室日期:2025/10/23

大家好,我是 INFINI Labs 的石阳。

欢迎关注 《搜索百科》 专栏!每天 5 分钟,带你速览一款搜索相关的技术或产品,同时还会带你探索它们背后的技术原理、发展故事及上手体验等。

在上一篇我们介绍了 OpenSearch —— 那个因协议争议而诞生的开源搜索分支。今天,我们把目光转向国内,聊聊极限科技研发的一款轻量级搜索引擎:Easysearch

引言

在搜索技术的世界里,从 Lucene 的出现到 Solr、Elasticsearch 的崛起,搜索引擎技术已经发展了二十余年。然而,随着开源协议的变更与国际形势的变化,国产自主搜索引擎的需求愈发迫切。在这样的背景下,Easysearch 作为一款自主可控、轻量高效、兼容 Elasticsearch 的分布式搜索引擎应运而生,为国内企业带来了全新的选择。

Easysearch 概述

Easysearch 是一款分布式搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析、AI 集成等。Easysearch 衍生自开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,并不断往前迭代更新,紧跟 Lucene 最新版本的更新。Easysearch 可以替代 Elasticsearch,同时添加和完善多项企业级功能。

  • 首次发布:2023 年 4 月
  • 最新版本:1.15.4(截止 2025 年 10 月)
  • 主导企业:极限科技 (INFINI Labs)
  • 官方网址easysearch.cn

诞生背景:为什么要有 Easysearch?

Easysearch 由极限科技(INFINI Labs)团队推出。项目的起点源于团队长期在搜索引擎和大数据领域的深厚实践积累,团队深刻认识到国内企业在使用 Elasticsearch 时普遍面临以下痛点:

  1. 开源协议变化带来的商业风险 —— Elastic 于 2021 年将许可更改为 SSPL,导致社区分裂,增加了企业在合规和商用上的不确定性;
  2. 高并发与高可靠性场景下对稳定可控方案的需求 —— 企业级应用亟需一个性能可靠、可深度优化的搜索基础设施;
  3. 技术栈自主可控的迫切需求 —— 随着国产化进程加快,国内生态中缺乏轻量化、易部署、且完全可控的搜索引擎产品;
  4. 本地化服务与快速响应能力的缺口 —— 国内企业更需要本地团队提供高效的技术支持与服务,对本土化、个性化功能需求能得到及时响应与反馈。

基于这些考虑,Easysearch 在设计之初就明确了目标:构建一款兼容 Elasticsearch API、简洁易用、性能出众且完全自主可控的国产搜索引擎

核心特性

  • 轻量级:安装包大小不到 60 MB,安装部署简洁,资源占用低,开箱即用;
  • 跨平台:支持主流操作系统和 CPU 架构,支持国产信创运行环境;
  • 高性能:针对不同场景进行的极致优化,可用更少硬件成本获得更高服务性能,降本增效。
  • 稳定可靠:修复大量内核问题,解决内存泄露,集群卡顿、查询缓慢等问题,久经严苛业务环境考验。
  • 安全增强:默认就提供完整的企业级安全功能,支持 LDAP/AD 集成,支持索引、文档、字段粒度细权管控。
  • 兼容性强:兼容 Elasticsearch 7.x 的 REST API 和数据格式,迁移成本低;
  • 可视化运维:无需 Kibana 即可通过内置 Web UI 插件界面管理索引、节点与监控指标等。

对比优势

对比维度EasysearchElasticsearchOpenSearch
用户协议社区免费+商业授权SSPL/AGPL v3Apache 2.0
API 兼容性高度兼容 ES原生高度兼容 ES
最小安装体积57MB482MB682MB
部署复杂度简单中等相对复杂
信创环境支持全面兼容
可视化管理开箱即用管理后台需独立部署 Kibana需独立部署 OpenSearch Dashboards
本地化与中文支持
AI 插件支持较弱较强
社区与生态快速成长中成熟广泛活跃增长

快速开始:5 分钟体验 Easysearch

1. 使用 Docker 启动

1# 直接运行镜像使用随机密码(数据及配置未持久化)
2docker run --name easysearch \
3--ulimit memlock=-1:-1 \
4-p 9200:9200 \
5infinilabs/easysearch:1.15.4
6

2. 验证集群状态

1curl -ku "username:password" -X GET "https://localhost:9200/"
2

返回结果示例:

1{
2  "name": "easysearch-node",
3  "cluster_name": "easysearch-6yhwn91v80gf",
4  "cluster_uuid": "Gfu_fuF1QViJfeUWVbiFCA",
5  "version": {
6    "distribution": "easysearch",
7    "number": "1.15.4",
8    "distributor": "INFINI Labs",
9    "build_hash": "9110128946b0af3de639966cfa74b5498346949d",
10    "build_date": "2025-10-14T03:30:41.948590Z",
11    "build_snapshot": false,
12    "lucene_version": "8.11.4",
13    "minimum_wire_lucene_version": "7.7.0",
14    "minimum_lucene_index_compatibility_version": "7.7.0"
15  },
16  "tagline": "You Know, For Easy Search!"
17}
18

3. 索引与搜索示例

1
2# 写入文档
3curl -ku "username:password" -X POST "https://localhost:9200/my_index/_doc" -H 'Content-Type: application/json' -d'
4{
5  "title": "Easysearch 入门",
6  "content": "这是一个轻量级搜索引擎的示例文档。",
7  "tags": ["搜索", "国产", "轻量级"]
8}'
9
10# 搜索文档
11curl -ku "username:password" -X GET "https://localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
12{
13  "query": {
14    "match": {
15      "content": "搜索引擎"
16    }
17  }
18}'
19

4. 使用 Easysearch UI

Easysearch 提供了轻量级界面化管理功能,不再依赖第三方组件即可对集群进行管理,真正做到开箱即用。如果你安装了 Easysearch UI 插件或者下载捆绑包,可通过 https://localhost:9200/\\\\\\\\\_ui/ 访问,进行节点、索引、分片、查询调试和监控查看等管理。

图 1:系统登录

图 2:集群概览

图 3:节点列表

图 4:节点概览

图 5:索引列表

图 6:索引概览

图 7:分片管理

图 8:开发工具

以上仅列出了一些基本功能,其他如安全管理、主从复制、备份管理、生命周期管理等更多高级功能由于篇幅限制不一一展示,有兴趣的朋友可自行部署探索。

结语

Easysearch 的诞生,不仅填补了国产搜索引擎在分布式与轻量化领域的空白,也让更多企业在面对开源协议变动与外部技术依赖时,拥有了更加安全、灵活、可控的选择。

它既是国产替代方案的有力代表,更是新一代搜索技术生态的积极探索者,为企业级实时搜索与分析带来新的可能。

🚀 下期预告

下一篇我们将介绍 一款 AI 驱动的现代搜索引擎 - Meilisearch,基于 Rust 构建的开源搜索引擎,性能高、部署简单。号称比 Elasticsearch 快 10 倍,真的这么牛吗?

💬 三连互动

  1. 你是否在使用或考虑国产搜索替代方案?
  2. 在实际项目中,你最看重搜索引擎的哪些特性?(性能、兼容性、运维、成本)
  3. 对 Easysearch 有什么功能上的期待?

对搜索技术感兴趣的朋友,也欢迎加我微信(ID:lsy965145175)备注“搜索百科”,拉你进 搜索技术交流群,一起探讨与学习!

推荐阅读

🔗 参考资源

原文:infinilabs.cn/blog/2025/s…


搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎》 是转载文章,点击查看原文


相关推荐


Swift 字符串与字符完全导读(一):从字面量到 Unicode 的实战之旅
unravel20252025/10/22

前言 Swift 的 String 看起来“像 NSString 的弟弟”,但骨子里是一套全新的 Unicode 抽象模型。 String 与 Character 的本质 String:由“扩展字形簇”(extended grapheme cluster)构成的有序集合。 Character:一个扩展字形簇,人类眼中的“一个字符”,占用的字节数可变。 // 1 个 Character,由 2 个 Unicode 标量合成 let eAcute: Character = "é"


JAVA面试复习笔记(待完善)
paishishaba2025/10/20

目录 布隆过滤器 一、核心思想 二、执行逻辑详解 1. 添加元素 2. 查询元素 三、为什么会有误判? 四、关键参数与性能权衡 五、执行逻辑总结与特点 六、典型应用场景 Redis 的 SETNX 命令 一、基本语法和语义 二、简单示例 三、SETNX 的核心特性 1. 原子性 2. 简单性 3. 无过期时间 四、经典应用场景 1. 分布式锁(最经典的应用) 五、SETNX 的局限性及改进方案 问题1:非原子性的设置过期时间 解决方案:使用 SET 命令


Windows Server,如何使用WSFC+nginx实现集群故障转移
IT橘子皮2025/10/19

在 Windows Server 环境中结合 WSFC(Windows Server Failover Clustering)和 Nginx 实现集群故障转移,核心目标是构建一个既具备应用层高可用性(由 Nginx 负责),又具备基础设施层高可用性(由 WSFC 保障 Nginx 服务本身)的稳固架构。下面这张图清晰地展示了这套架构的完整工作流程: 上图展示了WSFC如何通过心跳检测监控Nginx主节点的状态,并在故障发生时自动将服务(包括虚拟IP和Nginx进程)转移到备节点。下面我们详细拆


AI修图革命:IOPaint+cpolar让废片拯救触手可及
倔强的石头_2025/10/18

文章目录 前言【视频教程】1.什么是IOPaint?2.本地部署IOPaint3.IOPaint简单实用4.公网远程访问本地IOPaint5.内网穿透工具安装6.配置公网地址7.使用固定公网地址远程访问总结 前言 旅行拍照时意外拍到路人闯入?证件照背景不合规?传统修图软件学习成本高,在线工具又担心隐私泄露?IOPaint的出现给出了完美解方——这款开源AI修图工具支持一键擦除多余物体、修复老照片瑕疵,所有操作在本地完成,无需上传原始图片。特别适合摄影爱好者和自媒体创作者,其


“签名”这个概念是非对称加密独有的吗?
你的人类朋友2025/10/16

前言 🍃 你好啊,我是你的人类朋友 ☺️ 本篇文章主要来自于我之前在工作中犯的一个对“签名”的概念的误解 问大家一个问题: "签名"这个概念是非对称加密独有的吗? 先说答案:不是。 虽然【数字签名】确实是非对称加密技术的重要应用,但【"签名"】这个概念在密码学中有着更广泛的含义和应用。 今天就来澄清这个误解,也是我之前在学习信息安全的过程中犯的一个错误 🙀。 正文 一、签名的本质目的 在密码学中,"签名"的核心目的是提供: 身份认证 - 证明消息确实来自声称的发送方 完整性验证 - 确保消


Redis(63)Redis的Lua脚本如何使用?
Victor3562025/10/15

Redis 提供了对 Lua 脚本的支持,使得用户可以在服务器端执行原子操作,从而能够降低网络开销、提高性能和确保操作的原子性。以下是关于如何使用 Redis 的 Lua 脚本的详细指南,并结合实例代码进行说明。 1. 使用 Lua 脚本的基本命令 Redis 提供了两个主要命令来执行 Lua 脚本: EVAL EVALSHA EVAL 命令 EVAL 命令用于直接执行 Lua 脚本。 语法: EVAL script numkeys key [key ...] arg [arg ...]


html5的新增标签
期待~明天2025/10/14

HTML5新增结构标签 HTML5引入了多个语义化标签,用于更清晰地描述网页结构: <header>:定义文档或节的页眉<footer>:定义文档或节的页脚<nav>:定义导航链接<article>:定义独立的内容块<section>:定义文档中的节<aside>:定义页面内容之外的内容(如侧栏) HTML5新增多媒体标签 为支持原生多媒体内容,新增以下标签: <audio>:嵌入音频内容<video>:嵌入视频内容<source>:为多媒体元素定义多种媒体资源<track>:为视频添


在实际项目中如何设计一个高可用的Spring Cloud Gateway集群?
IT橘子皮2025/10/12

在高可用架构中,Spring Cloud Gateway 集群的设计是关键环节。下面我将从核心架构、关键配置到生产级优化,为你梳理高可用网关集群的设计方案。 🏗️ 集群架构设计 构建高可用网关集群的核心是消除单点故障,并通过分层设计实现流量可靠分发。 ​核心模式​:标准的解决方案是部署多个 Gateway 实例,并在前端配置一个负载均衡器(如云服务商的SLB/ELB/ALB或自建的Nginx/HAProxy)作为统一的流量入口。所有外部请求先到达负载均衡器,再由其分发到后端的各个Gatewa


先用js快速开发,后续引入ts是否是一个好的实践?
你的人类朋友2025/10/11

前言 我在业余时间做一些小项目时,每次进行技术选型,都会有一个疑问: 应该直接使用 TypeScript 开发,还是先用 JavaScript 快速启动,后续再引入 TypeScript? 今天干脆来整理一下思路,方便后续复用这些想法 正文 一、快速开发的优势 先用 JavaScript 进行快速开发确实有其明显优势: 开发速度更快 无需类型定义和接口声明 跳过类型检查的编译步骤 ⭐ 【重要】特别适合【原型开发】和【概念验证】,个人认为这个是最重要的 学习成本低 更容易上手 ⭐ 【重要】减


深入解析 Vue 3 源码:computed 的底层实现原理
excel2025/10/9

在 Vue 3 的响应式系统中,computed 是一个非常重要的功能,它用于创建基于依赖自动更新的计算属性。本文将通过分析源码,理解 computed 的底层实现逻辑,帮助你从源码层面掌握它的原理。 一、computed 的基本使用 在使用层面上,computed 有两种常见用法: 1. 只读计算属性 const count = ref(1) const plusOne = computed(() => count.value + 1) console.log(plusOne.value)

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0