国产替代
CDC、查询卸载与 AI 检索:达梦 × Easysearch 技术交流干货回顾
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2735 次浏览 • 5 天前
在金融行业数字化转型与信创建设持续推进的背景下,如何让国产数据库更好地支撑海量数据检索、实时分析与智能应用,成为越来越多企业关注的话题。
8 月 7 日,围绕 “达梦数据库 × Easysearch 金融行业搜索与分析加速方案”,我们开展了一场技术主题分享与交流活动。 由 极限科技技术专家杨帆 从金融行业实际业务需求出发,深入介绍了达梦数据库与 Easysearch 的协同架构,并围绕数据同步、查询卸载、性能优化以及国产化生态合作等问题,与参会伙伴展开了深入交流。

本次分享的核心方案,是通过 “达梦数据库 + CDC 实时同步 + Easysearch” 构建事务与检索分析分离的架构:达梦继续承担核心事务处理和主数据管理,Easysearch 则承接全文搜索、海量数据检索、多维分析以及 AI 检索等场景,让两套系统各司其职,共同提升数据服务能力。
一、为什么需要“数据库 + 搜索引擎”?
传统关系型数据库在 OLTP 场景下具有强一致性、事务处理和数据管理等优势,但当业务逐渐面临海量数据全文检索、多维聚合分析以及复杂搜索体验等需求时,单纯依赖数据库往往会面临新的挑战。

例如在金融场景中,交易明细、合同与制度文件、客户信息、日志数据等都需要被快速检索;与此同时,大量报表、聚合分析和历史数据查询又可能与核心交易业务争抢 CPU、IO 等资源。
分享中提到,达梦擅长 OLTP 事务处理、强一致性、数据安全与审计等能力,而在全文检索、相关性排序以及海量检索分析等方面,则可以通过 Easysearch 进行能力补充。
因此,方案的核心思路并不是简单地“用 Easysearch 替换数据库”,而是:
让数据库专注事务,让搜索引擎专注搜索与分析。
达梦负责写入、更新、事务一致性以及主数据管理;Easysearch 则负责从海量数据中快速“找出来、关联起来”,承接搜索、聚合、向量检索及 AI 等查询型负载。
二、CDC:连接事务库与检索分析库的关键纽带
在这样的架构中,如何让达梦中的数据及时同步到 Easysearch,是大家非常关注的问题。

本次方案采用 CDC 实时同步 的方式,整体链路包括三个阶段:
全量同步 → 增量同步 → 持续运行
首先将达梦存量数据同步至 Easysearch,建立数据基线;随后通过 CDC 持续捕获 INSERT、UPDATE、DELETE 等数据变化,并实时同步到 Easysearch,最终形成持续运行的数据同步链路。
在分享介绍的测试验证中,达梦 DM8 × Easysearch 已完成兼容认证测试,全量同步和增量同步均验证通过;在 CDC 高压同步测试中,万级变更可在 30 秒内完成同步,并实现读写一致、无积压。
三、现场技术交流:从“方案介绍”走向“实际问题”
相比单向的技术分享,本次活动更加精彩的部分,是分享结束后的互动交流。
围绕方案在真实生产环境中的落地,参会伙伴提出了多个非常有针对性的问题,分享老师也结合方案设计和实际经验进行了逐一解答。
1. CDC 延迟一般是多少?
CDC 是整个架构实现近实时数据同步的关键,因此大家首先关注了:
从达梦发生数据变更,到 Easysearch 可以查询到数据,中间通常存在多大的延迟?
这个问题实际上不仅涉及 CDC 本身,还与源端产生变更的速度、网络、同步任务处理能力以及目标端写入性能等多个因素相关。

在常规业务负载下,CDC 增量同步延迟可控制在秒级;如果业务变更量更高,可通过 Easysearch 动态扩容分片、增加 CDC 同步并发等方式进一步降低延迟,满足金融级近实时数据一致性要求。
2. 哪些查询适合留在达梦?哪些查询适合放到 Easysearch?
这是现场非常有代表性的一个问题。
实际上,“哪些数据进入 Easysearch”并不是简单按照表来划分,而更应该按照 业务访问模式和查询类型 来判断。
例如:
- 强事务、强一致性的核心业务操作,继续留在达梦;
- 精确查询、事务处理以及主数据维护,继续由达梦负责;
- 全文搜索、模糊查询、相关性排序等场景,可以交给 Easysearch;
- 海量数据检索、多维聚合分析、历史数据查询等,可以通过 Easysearch 进行查询卸载;
- 面向 AI 的向量检索、混合检索和 RAG 等场景,则可以进一步利用 Easysearch 的搜索能力。
这种“按负载类型进行职责分工”的方式,也是整个方案设计的核心。

3. 从搜索到分析:Easysearch 还能解决什么?
除了传统的全文检索,本次分享还介绍了 Easysearch 在海量数据分析、向量检索以及 AI 场景中的应用。

在全文搜索方面,Easysearch 支持 IK、拼音、HanLP 等中文分词能力,并提供 BM25 相关性评分、Function Score、高亮、同义词、搜索建议等能力。
在海量数据分析方面,则可以通过倒排索引、列式 Doc Values 以及聚合能力,承接交易明细分析、日志检索、客户行为分析以及风控等场景。
而在 AI 场景中,Easysearch 还可以进一步提供向量检索和全文检索融合能力,为 RAG、语义搜索、智能客服、推荐以及反欺诈等应用提供检索底座。
这意味着,数据库中的结构化数据经过同步之后,并不只是多了一个“搜索入口”,而是可以进一步形成 搜索、分析与 AI 多种数据服务能力。
4. 在国产数据库信创领域,达梦与 Easysearch 有哪些合作空间?
二者都是信创全栈适配的国产自主产品,合作空间非常广阔:
首先是联合解决方案落地:面向金融、运营商、政企等行业,提供“事务库 + 检索分析库”的信创标准架构,满足等保、密评要求,规避开源组件协议风险;
其次是国产化替代场景:Easysearch 可作为 Elasticsearch 的平滑替代产品,与达梦组合形成“去 IOE + 去开源 Elastic ”的全栈信创方案,目前已在中国移动、中国一汽等标杆项目中验证;

此外还有AI场景拓展:二者结合可支撑金融 RAG 知识库、智能风控、语义合规审查等 AI 应用,为信创环境下的智能化转型提供底座。
四、一次分享,也是一次技术碰撞
从达梦数据库到 Easysearch,从 CDC 到查询卸载,再到全文搜索、海量分析和 AI 检索,本次交流虽然围绕的是一个具体的技术方案,但大家讨论的其实是一个更加普遍的问题:
在信创和数字化转型背景下,如何让不同类型的数据基础设施发挥各自的优势,并最终服务于业务?
达梦与 Easysearch 的组合,并不是简单的“1+1”,而是通过职责分离,让事务处理、数据管理、搜索、分析和 AI 各自发挥所长。
技术分享有终点,技术交流没有终点。
感谢分享嘉宾的精彩内容,也感谢每一位参会伙伴的积极参与和深度交流。
期待下一次,我们继续围绕 搜索、数据库、数据分析、AI 与信创技术,碰撞出更多新的思路与实践。
达梦 × Easysearch,探索国产数据基础设施协同的新可能。
参考资源:
- PPT 下载:https://searchkit.cn/slides/347
- 达梦官网:https://dameng.com
- Easysearch 官网:https://easysearch.cn
Bboss v7.5.6 正式发布,全面兼容国产分布式搜索引擎 Easysearch
资讯动态 • INFINI Labs 小助手 发表了文章 • 0 个评论 • 13152 次浏览 • 2026-06-23 23:31
一、引言
2026 年 6 月 21 日,经过 Bboss 开源社区与极限科技(INFINI Labs)的紧密合作, Bboss v7.5.6 正式发布!
作为国内领先的 AI 智能体开发框架、数据采集同步 ETL 工具以及流批一体化计算引擎,Bboss 在本次更新中与国产分布式搜索引擎 Easysearch 完成深度兼容,其 Elasticsearch Java 客户端 全面兼容 Easysearch 1.x、2.x 全系列版本。开发者现在可以无缝使用 Bboss 客户端操作 Easysearch 集群,享受与 Elasticsearch 一致的开发体验。

二、Bboss Elasticsearch 客户端简介
Bboss 是一款高性能、高兼容性的搜索引擎 Java REST 客户端框架,基于 Apache License 2.0 开源,原生支持 Elasticsearch、Easysearch 和 Opensearch。
自带客户端集群节点负载均衡和容灾,多集群多数据源,自动索引托管,多种分页机制,傻瓜级 CRUD,脚本,SQL,JDBC,高亮,权重,聚合,IP,GEO 地理位置,父子嵌套,应有尽有。
核心特性
| 特性 | 说明 |
|---|---|
| 原生多引擎支持 | 完美支持 ES 1.x ~ 9.x、Easysearch 1.x ~ 2.x、Opensearch 1.x ~ 3.x |
| 学习成本低 | 无需学习额外 API,只需掌握 Elasticsearch DSL,极简使用方式 |
| 开箱即用 | Spring Boot 自动配置,无需复杂设置 |
| 高效异步处理 | 内置 BulkProcessor 异步批处理器,大幅提升写入性能 |
| 灵活查询方式 | 支持 DSL、SQL、O/R Mapping 多种查询模式 |
| 多数据源支持 | 一个应用可同时操作多个不同版本的搜索引擎集群 |
| 客户端负载均衡 | 默认启用客户端负载均衡,容灾性更好 |
| 完整的结果封装 | 返回结果支持 JSON、PO 对象、List 集合、Map 等多种类型 |
三、为什么选择 Bboss + Easysearch
将 Bboss 作为 Easysearch 的 Java 客户端,您将获得以下独特优势:
- 国产化技术栈:从底层搜索引擎到上层客户端框架,完全国产化自主可控,满足信创合规要求,无许可证风险。
- 极低迁移成本:如果您正在使用 Elasticsearch + Bboss 技术栈,切换到 Easysearch 几乎零成本,只需修改连接配置即可。
- 成熟稳定的客户端:Bboss 经过多年发展,已在国内众多企业和项目中得到广泛应用和验证,拥有活跃的中文社区和完善的文档支持。
- 丰富的生态能力:除了基础的 CRUD 操作,还提供数据采集 ETL、流批一体化计算、AI 智能体等丰富的扩展能力。
四、快速开始
通过以下简单步骤,即可在 Bboss 中接入 Easysearch:
1. 添加 Maven 依赖
<dependency>
<groupId>com.bbossgroups.plugins</groupId>
<artifactId>bboss-datatran-jdbc</artifactId>
<version>7.5.6</version>
</dependency>
2. 配置 Easysearch 连接
spring:
elasticsearch:
bboss:
elasticsearch:
rest:
hostNames: localhost:9200
useHttps: true # Easysearch 默认启用 HTTPS
elasticUser: admin
elasticPassword: your_password
3. 基础操作
@Service
public class DocumentService {
@Autowired
private BBossESStarter bbossESStarter;
// 插入文档
public void insertDocument() {
ClientInterface client = bbossESStarter.getRestClient();
Document doc = new Document();
doc.setId("1");
doc.setTitle("Easysearch 与 Bboss 集成");
doc.setContent("这是一篇关于集成的文章");
client.addDocument("documents", doc, "refresh=true");
}
// 查询文档
public Document getDocument(String id) {
ClientInterface client = bbossESStarter.getRestClient();
return client.getDocument("documents", id, Document.class);
}
// 按字段查询
public ESDatas<Document> searchByAuthor(String author) {
ClientInterface client = bbossESStarter.getRestClient();
return client.searchListByField(
"documents", "author.keyword", author,
Document.class, 0, 10
);
}
}
五、结语
Bboss v7.5.6 与 Easysearch 的深度兼容,是国产开源生态建设的又一重要成果。作为 Easysearch 原厂,我们欢迎更多像 Bboss 这样的优秀开源项目加入国产搜索引擎生态,共同推动国内搜索型数据库的发展与繁荣。
对于正在评估搜索引擎选型或计划进行国产替代的企业用户,Bboss + Easysearch 的组合无疑是值得信赖的选择。
立即体验 Easysearch,开启国产搜索引擎之旅:
- Easysearch 官网: https://easysearch.cn
- Bboss 官方文档: https://esdoc.bbossgroups.com
- Easysearch x Bboss 详细集成文档: https://docs.infinilabs.com/easysearch/main/docs/integrations/third-party/bboss
六、关于 Easysearch

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。作为国内领先的国产搜索引擎产品,Easysearch 具备以下核心优势:
1. 国产化自主可控
自主研发,符合信创要求,无许可证风险,为企业提供安全可靠的技术保障。在当前国际形势日益复杂、信创需求持续提升的大背景下,Easysearch 为政府、金融、电信、能源等关键行业提供了值得信赖的搜索引擎基础设施。
2. 轻量级架构
相比传统搜索引擎,Easysearch 资源占用更少,启动更快速,显著降低企业运维成本。其精简的架构设计使得在同等硬件条件下可以承载更多的业务负载,特别适合资源受限的私有化部署场景。
3. 卓越性能表现
查询性能优异,能够满足大部分业务场景需求,用户体验流畅。通过持续的内核优化和算法改进,Easysearch 在多项基准测试中展现出媲美甚至超越同类产品的性能水平。
4. 良好兼容性
与 Elasticsearch 的 API 接口基本兼容,迁移成本较低,保护用户现有投资。这一特性使得基于 Elasticsearch 开发的应用可以快速平滑地迁移至 Easysearch,大大降低了国产替代的技术门槛。
社区福利
为感谢广大社区开发者的支持,Bboss 与 Easysearch 厂商极限科技联合发起抽奖活动,奖品为开源T恤。6 月 29 日上午 10 点自动开奖,欢迎大家扫码抽奖参与。
搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎
Easysearch • liaosy 发表了文章 • 0 个评论 • 8682 次浏览 • 2025-10-20 15:54
大家好,我是 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)
- 官方网址:https://easysearch.cn
诞生背景:为什么要有 Easysearch?
Easysearch 由极限科技(INFINI Labs)团队推出。项目的起点源于团队长期在搜索引擎和大数据领域的深厚实践积累,团队深刻认识到国内企业在使用 Elasticsearch 时普遍面临以下痛点:
- 开源协议变化带来的商业风险 —— Elastic 于 2021 年将许可更改为 SSPL,导致社区分裂,增加了企业在合规和商用上的不确定性;
- 高并发与高可靠性场景下对稳定可控方案的需求 —— 企业级应用亟需一个性能可靠、可深度优化的搜索基础设施;
- 技术栈自主可控的迫切需求 —— 随着国产化进程加快,国内生态中缺乏轻量化、易部署、且完全可控的搜索引擎产品;
- 本地化服务与快速响应能力的缺口 —— 国内企业更需要本地团队提供高效的技术支持与服务,对本土化、个性化功能需求能得到及时响应与反馈。
基于这些考虑,Easysearch 在设计之初就明确了目标:构建一款兼容 Elasticsearch API、简洁易用、性能出众且完全自主可控的国产搜索引擎。
核心特性
- 轻量级:安装包大小不到 60 MB,安装部署简洁,资源占用低,开箱即用;
- 跨平台:支持主流操作系统和 CPU 架构,支持国产信创运行环境;
- 高性能:针对不同场景进行的极致优化,可用更少硬件成本获得更高服务性能,降本增效。
- 稳定可靠:修复大量内核问题,解决内存泄露,集群卡顿、查询缓慢等问题,久经严苛业务环境考验。
- 安全增强:默认就提供完整的企业级安全功能,支持 LDAP/AD 集成,支持索引、文档、字段粒度细权管控。
- 兼容性强:兼容 Elasticsearch 7.x 的 REST API 和数据格式,迁移成本低;
- 可视化运维:无需 Kibana 即可通过内置 Web UI 插件界面管理索引、节点与监控指标等。
对比优势
| 对比维度 | Easysearch | Elasticsearch | OpenSearch |
|---|---|---|---|
| 用户协议 | 社区免费+商业授权 | SSPL/AGPL v3 | Apache 2.0 |
| API 兼容性 | 高度兼容 ES | 原生 | 高度兼容 ES |
| 最小安装体积 | 57MB | 482MB | 682MB |
| 部署复杂度 | 简单 | 中等 | 相对复杂 |
| 信创环境支持 | 全面兼容 | 无 | 无 |
| 可视化管理 | 开箱即用管理后台 | 需独立部署 Kibana | 需独立部署 OpenSearch Dashboards |
| 本地化与中文支持 | 强 | 弱 | 弱 |
| AI 插件支持 | 较弱 | 强 | 较强 |
| 社区与生态 | 快速成长中 | 成熟广泛 | 活跃增长 |
快速开始:5 分钟体验 Easysearch
1. 使用 Docker 启动
# 直接运行镜像使用随机密码(数据及配置未持久化)
docker run --name easysearch \
--ulimit memlock=-1:-1 \
-p 9200:9200 \
infinilabs/easysearch:1.15.4
2. 验证集群状态
curl -ku "username:password" -X GET "https://localhost:9200/"
返回结果示例:
{
"name": "easysearch-node",
"cluster_name": "easysearch-6yhwn91v80gf",
"cluster_uuid": "Gfu_fuF1QViJfeUWVbiFCA",
"version": {
"distribution": "easysearch",
"number": "1.15.4",
"distributor": "INFINI Labs",
"build_hash": "9110128946b0af3de639966cfa74b5498346949d",
"build_date": "2025-10-14T03:30:41.948590Z",
"build_snapshot": false,
"lucene_version": "8.11.4",
"minimum_wire_lucene_version": "7.7.0",
"minimum_lucene_index_compatibility_version": "7.7.0"
},
"tagline": "You Know, For Easy Search!"
}
3. 索引与搜索示例
# 写入文档
curl -ku "username:password" -X POST "https://localhost:9200/my_index/_doc" -H 'Content-Type: application/json' -d'
{
"title": "Easysearch 入门",
"content": "这是一个轻量级搜索引擎的示例文档。",
"tags": ["搜索", "国产", "轻量级"]
}'
# 搜索文档
curl -ku "username:password" -X GET "https://localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "搜索引擎"
}
}
}'
4. 使用 Easysearch UI
Easysearch 提供了轻量级界面化管理功能,不再依赖第三方组件即可对集群进行管理,真正做到开箱即用。如果你安装了 Easysearch UI 插件或者下载捆绑包,可通过 https://localhost:9200/\_ui/ 访问,进行节点、索引、分片、查询调试和监控查看等管理。
图 1:系统登录

图 2:集群概览

图 3:节点列表

图 4:节点概览

图 5:索引列表

图 6:索引概览

图 7:分片管理

图 8:开发工具

以上仅列出了一些基本功能,其他如安全管理、主从复制、备份管理、生命周期管理等更多高级功能由于篇幅限制不一一展示,有兴趣的朋友可自行部署探索。
结语
Easysearch 的诞生,不仅填补了国产搜索引擎在分布式与轻量化领域的空白,也让更多企业在面对开源协议变动与外部技术依赖时,拥有了更加安全、灵活、可控的选择。
它既是国产替代方案的有力代表,更是新一代搜索技术生态的积极探索者,为企业级实时搜索与分析带来新的可能。
🚀 下期预告
下一篇我们将介绍 一款 AI 驱动的现代搜索引擎 - Meilisearch,基于 Rust 构建的开源搜索引擎,性能高、部署简单。号称比 Elasticsearch 快 10 倍,真的这么牛吗?
💬 三连互动
- 你是否在使用或考虑国产搜索替代方案?
- 在实际项目中,你最看重搜索引擎的哪些特性?(性能、兼容性、运维、成本)
- 对 Easysearch 有什么功能上的期待?
对搜索技术感兴趣的朋友,也欢迎加我微信(ID:lsy965145175)备注“搜索百科”,拉你进 搜索技术交流群,一起探讨与学习!
✨ 推荐阅读
- 搜索百科(4):OpenSearch — 开源搜索的新选择
- 搜索百科(3):Elasticsearch — 搜索界的"流量明星"
- 搜索百科(2):Apache Solr — 企业级搜索的开源先锋
- 搜索百科(1):Lucene — 打开现代搜索世界的第一扇门
🔗 参考资源
原文:https://infinilabs.cn/blog/2025/search-wiki-5-easysearch/
Easysearch 国产替代 Elasticsearch:8 大核心问题解读
Easysearch • liaosy 发表了文章 • 0 个评论 • 14636 次浏览 • 2025-09-18 09:43
近年来,随着数据安全与自主可控需求的不断提升,越来越多的企业开始关注国产化的搜索与日志分析解决方案。作为极限科技推出的国产 Elasticsearch 替代产品,Easysearch 凭借其对搜索场景的深入优化、轻量级架构设计以及对 ES 生态的高度兼容,成为众多企业替代 Elasticsearch 的新选择。

我们在近期与用户的交流中,整理出了大家最关心的八大问题,并将它们浓缩为一篇技术解读,希望帮助你快速了解 Easysearch 的优势与定位。
用户最关心的八大问题
- Easysearch 对数据量的支撑能力如何,能应对 PB 级数据存储吗?
答:完全可以。Easysearch 支持水平扩展,通过增加节点即可线性提升存储与计算能力。在实际应用中,已成功支撑 PB 级日志与检索数据。同时,其存储压缩率相比 Elasticsearch 7.10.2 平均高出 2.5~3 倍,显著节省硬件成本。
- 在高并发写入场景下,Easysearch 和 ES 的性能差异有多大?
答:在相同硬件配置下,使用 Nginx 日志进行 bulk 写入压测,Easysearch 在多种分片配置下的写入性能相比 Elasticsearch 7.10.2 提升 40%-70%,更适合高并发写入场景。
- 是否支持中文分词?需要额外插件吗?
答:中文分词一直是 Elasticsearch 用户的「必装插件」。而在 Easysearch 中,中文分词是开箱即用的,同时支持 ik、pinyin 等主流分词器,还能自定义词典,方便电商、内容平台等场景。
- 从 ES 迁移到 Easysearch 是否复杂?会影响业务吗?
答:迁移往往是国产替代的最大顾虑。为此,Easysearch 提供了 极限网关 工具,支持全量同步和实时增量同步。迁移过程中业务可继续读写,只需短暂切换连接地址,几乎无感知。
- 监控与运维工具是否完善?是否支持 Kibana?
答:Easysearch 提供完整的监控与运维体系。从 Easysearch 1.15.x 版本起自带 Web UI 管理控制台(类似简化版 Kibana),支持索引管理、查询调试、权限控制等功能。同时还提供 INFINI Console 实现多集群管理与深度监控等。也可以通过配置让 Kibana 连接 Easysearch(部分高级功能可能受限)。
- 小型团队技术能力有限,用 Easysearch 运维难度高吗?
答:Easysearch 的一大设计理念就是降低运维门槛。Easysearch 提供一键部署脚本,减少手动配置参数,支持自动分片均衡与故障节点恢复,无需专职运维人员也能稳定运行,非常适合技术资源有限的团队。
- Easysearch 是否支持数据备份与恢复?操作复杂吗?
答:支持快照(Snapshot),可备份到本地磁盘或对象存储(S3、OSS 等)。恢复时仅需执行快照恢复命令,满足企业级数据安全需求。
- 对比 ES,Easysearch 在使用体验上最大的不同是什么?
答:Easysearch 保持与 Elasticsearch 类似的接口与查询 DSL,用户几乎无学习成本即可上手。同时,它针对国产化环境和搜索场景做了优化,运维更轻量,成本更可控。
结语:Easysearch,国产化搜索的新选择
作为一款国产自主可控的搜索与日志分析引擎,Easysearch 不仅继承了 Elasticsearch 的核心能力,更在性能、易用性、资源效率和中文支持等方面进行了深度优化。对于希望实现国产化替代、降低运维成本、提升系统性能的企业来说,Easysearch 是一个值得认真考虑的新选择。

如果你正在评估 Elasticsearch 的替代方案,不妨从 Easysearch 开始,体验更轻量、更高效的搜索新架构。
如需了解更多技术细节与使用案例,欢迎访问官方文档与社区资源:
- Easysearch 官网文档
- Elasticsearch VS Easysearch 性能测试
- 使用 Easysearch,日志存储少一半
- Kibana OSS 7.10.2 连接 Easysearch
- 自建 ES 集群通过极限网关无缝迁移到云上
- INFINI Console 一站式的数据搜索分析与管理平台

让 Easysearch 运行在 LoongArch(3C5000L) 上
Easysearch • Hardy 发表了文章 • 3 个评论 • 3121 次浏览 • 2023-09-11 12:53
简介
在上一次,我介绍了在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen,小伙伴们可查看原文。今天我重点介绍下在 Loongnix-Server Linux release 8.4.1 (3C5000L)上安装 Easysearch。
系统配置
在安装之前,需要先进行系统参数调整并创建操作用户,以下命令均需要使用 root 用户操作。
#配置nofile和memlock
tee /etc/security/limits.d/21-infini.conf <<-'EOF'
* soft nofile 1048576
* hard nofile 1048576
* soft memlock unlimited
* hard memlock unlimited
root soft nofile 1048576
root hard nofile 1048576
root soft memlock unlimited
root hard memlock unlimited
EOF
#关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
grep -i HugePages_Total /proc/meminfo
grep -wq transparent_hugepage /etc/rc.local || cat <<-'EOF' >> /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod 755 /etc/rc.local
#内核调优
tee /etc/sysctl.d/70-infini.conf <<-'EOF'
vm.max_map_count = 262145
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 900
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535
EOF
sysctl -p /etc/sysctl.d/70-infini.conf
用户配置
#创建Easysearch操作用户
groupadd -g 602 es
useradd -u 602 -g es -m -d /home/es -c 'easysearch' -s /bin/bash es
配置 JDK
#在各个节点上分别操作
wget -N http://ftp.loongnix.cn/Java/openjdk17/loongson17.4.0-fx-jdk17.0.6_10-linux-loongarch64.tar.gz -P /usr/src
mkdir -p /usr/local/jdk
tar -zxf /usr/src/loongson*.tar.gz -C /usr/local/jdk --strip-components 1
tee /etc/profile.d/java.sh <<-'EOF'
# set java environment
JAVA_HOME=/usr/local/jdk
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
EOF
source /etc/profile
java -version
Easysearch 部署
部署及密码配置
#在线安装
curl -sSL http://get.infini.sh | bash -s -- -p easysearch -d /data/easysearch
#初始化证书(若不采用默认证书,如需要调整证书可修改证书生成文件)
cd /data/easysearch
#默认会生成随机密码
bin/initialize.sh
ll /data/easysearch/config/{*.crt,*.key,*.pem}
配置文件及 JVM 调整
cat <<EOF > /data/easysearch/config/easysearch.yml
cluster.name: infinilabs
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["node-1"]
path.home: /data/easysearch
path.data: /data/easysearch/data
path.logs: /data/easysearch/logs
http.compression: true
security.enabled: true
security.audit.type: noop
security.ssl.transport.cert_file: instance.crt
security.ssl.transport.key_file: instance.key
security.ssl.transport.ca_file: ca.crt
security.ssl.transport.skip_domain_verify: true
security.ssl.http.enabled: true
security.ssl.http.cert_file: instance.crt
security.ssl.http.key_file: instance.key
security.ssl.http.ca_file: ca.crt
security.allow_default_init_securityindex: true
security.nodes_dn:
- 'CN=infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
security.restapi.roles_enabled: [ "superuser", "security_rest_api_access" ]
security.system_indices.enabled: true
security.ssl.http.clientauth_mode: OPTIONAL
security.system_indices.indices: [".infini-*"]
#for admin dn
## specify admin certs to operate against system indices, basic_auth is not required
## curl -k --cert config/admin.crt --key config/admin.key -XDELETE 'https://localhost:9200/.infini-*/'
security.authcz.admin_dn:
- 'CN=admin.infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
EOF
#根据实际机器内存的大小进行配置,推荐配置为机器内存一半,且不超过31G
sed -i "s/1g/4g/g" $ES_HOME/config/jvm.options
备份目录及权限调整
#创建备份目录
mkdir -p /data/easysearch/backup
#更新目录权限
chown -R es.es /data/easysearch
环境变量及启动服务
su - es
grep -wq easysearch ~/.bashrc || cat<<EOF >> ~/.bashrc
export ES_HOME=/data/easysearch
EOF
source ~/.bashrc
#jna替换<龙芯平台有独立的jna实现>
rm -rvf $ES_HOME/lib/jna*.jar
wget -N https://release.infinilabs.com/easysearch/archive/jna/loongarch64/jna-5.12.1.jar -P $ES_HOME/lib
#以后台方式启动服务
$ES_HOME/bin/easysearch -d
Easysearch 验证
curl -ku "admin:$pass" https://127.0.0.1:9200
curl -ku "admin:$pass" https://127.0.0.1:9200/_cluster/health?pretty
curl -ku "admin:$pass" https://127.0.0.1:9200/_cat/nodes?v
部署 Console
curl -sSL http://get.infini.sh | bash -s -- -p console
#安装服务并启动
cd /opt/console
./console-linux-loong64 -service install
./console-linux-loong64 -service start
#验证
systemctl status console
部署 Agent
curl -sSL http://get.infini.sh | bash -s -- -p agent
#修改Agent配置文件
cd /opt/agent
sed -i "/ES_ENDPOINT:/ s|\(.*\: \).*|\1$https://localhost:9200|" agent.yml
sed -i "/ES_USER:/ s|\(.*\: \).*|\1admin|" agent.yml
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
sed -i "/API_BINDING:/ s|\(.*\: \).*|\1\"0.0.0.0:8080\"|" agent.yml
head -n 5 agent.yml
#安装服务并启动
./agent-linux-loong64 -service install
./agent-linux-loong64 -service start
#验证
systemctl status agent
部署 Gateway
curl -sSL http://get.infini.sh | bash -s -- -p gateway
cd /opt/gateway
#修改Gateway配置文件
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
head -n 10 gateway.yml
#安装服务并启动
./gateway-linux-loong64 -service install
./gateway-linux-loong64 -service start
#检查服务
systemctl status gateway
curl -u "admin:$pass" http://127.0.0.1:8000
部署 Loadgen
curl -sSL http://get.infini.sh | bash -s -- -p loadgen
#写入数据测试
cd /opt/loadgen
mkdir -p mock
cat <<EOF > mock/nginx.log
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET / HTTP/1.1" 200 8676 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/bootstrap/css/bootstrap.css HTTP/1.1" 200 17235 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/daterangepicker/daterangepicker.css HTTP/1.1" 200 1700 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/v5-compat.css HTTP/1.1" 200 2091 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/font/raleway.css HTTP/1.1" 200 145 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/fork-awesome.css HTTP/1.1" 200 8401 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/overrides.css HTTP/1.1" 200 2524 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/theme.css HTTP/1.1" 200 306 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fancytree/css/ui.fancytree.css HTTP/1.1" 200 3456 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /syncthing/development/logbar.js HTTP/1.1" 200 486 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
EOF
cat <<EOF > loadgen.yml
env:
ES_USERNAME: admin
ES_PASSWORD: $pass
ES_ENDPOINT: http://localhost:8000
runner:
# total_rounds: 1
no_warm: false
# Whether to log all requests
log_requests: false
# Whether to log all requests with the specified response status
log_status_codes:
- 0
- 500
assert_invalid: false
assert_error: false
variables:
- name: ip
type: file
path: dict/ip.txt
- name: message
type: file
path: mock/nginx.log
replace: # replace special characters in the value
'"': '\"'
'\': '\\'
- name: user
type: file
path: dict/user.txt
- name: id
type: sequence
- name: uuid
type: uuid
- name: now_local
type: now_local
- name: now_utc
type: now_utc
- name: now_unix
type: now_unix
- name: suffix
type: range
from: 10
to: 13
requests:
- request:
method: POST
runtime_variables:
batch_no: uuid
runtime_body_line_variables:
routing_no: uuid
basic_auth:
username: $[[env.ES_USERNAME]]
password: $[[env.ES_PASSWORD]]
url: $[[env.ES_ENDPOINT]]/_bulk
body_repeat_times: 5000
body: |
{ "index" : { "_index" : "test-$[[suffix]]", "_id" : "$[[uuid]]" } }
{ "id" : "$[[uuid]]","routing_no" : "$[[routing_no]]","batch_number" : "$[[batch_no]]","message" : "$[[message]]","random_no" : "$[[suffix]]","ip" : "$[[ip]]","now_local" : "$[[now_local]]","now_unix" : "$[[now_unix]]" }
EOF
#执行测试
./loadgen-linux-loong64 -c 6 -d 6 --compress
#检查测试索引文档
curl -u "admin:$pass" http://127.0.0.1:8000/_cat/indices/test*?v
至此,完成在 LoongArch(3C5000L)上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen。通过浏览器 http://机器域名:9000/ 即可访问 Console,对 Easysearch 进行配置管理。
可能遇到的问题

检查下配置文件中监听的地址是否正确,防火墙是否有关闭。

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
让 Easysearch 运行在 Kylin V10 (Lance)-aarch64 上
Easysearch • Hardy 发表了文章 • 0 个评论 • 4580 次浏览 • 2023-06-07 11:08
简介
本文主要介绍在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen
系统配置
在安装之前,需要先进行系统参数调整并创建操作用户,以下命令均需要使用 root 用户操作。
#配置nofile和memlock
tee /etc/security/limits.d/21-infini.conf <<-'EOF'
* soft nofile 1048576
* hard nofile 1048576
* soft memlock unlimited
* hard memlock unlimited
root soft nofile 1048576
root hard nofile 1048576
root soft memlock unlimited
root hard memlock unlimited
EOF
#关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
grep -i HugePages_Total /proc/meminfo
grep -wq transparent_hugepage /etc/rc.local || cat <<-'EOF' >> /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod 755 /etc/rc.local
#内核调优
tee /etc/sysctl.d/70-infini.conf <<-'EOF'
vm.max_map_count = 262145
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 900
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535
EOF
sysctl -p /etc/sysctl.d/70-infini.conf
用户配置
#创建Easysearch操作用户
groupadd -g 602 es
useradd -u 602 -g es -m -d /home/es -c 'easysearch' -s /bin/bash es
配置 JDK
#在各个节点上分别操作
wget -N https://release.infinilabs.com/easysearch/jdk/zulu17.40.19-ca-jdk17.0.6-linux_aarch64.tar.gz -P /usr/src
mkdir -p /usr/local/jdk
tar -zxf /usr/src/zulu*.tar.gz -C /usr/local/jdk --strip-components 1
tee /etc/profile.d/java.sh <<-'EOF'
# set java environment
JAVA_HOME=/usr/local/jdk
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
EOF
source /etc/profile
java -version
Easysearch 部署
部署及密码配置
#在线安装
curl -sSL http://get.infini.sh | bash -s -- -p easysearch -d /data/easysearch
#初始化证书(若不采用默认证书,如需要调整证书可修改证书生成文件)
cd /data/easysearch
bin/initialize.sh
ll /data/easysearch/config/{*.crt,*.key,*.pem}
#调整默认密码及服务配置文件
export ES_HOME=/data/easysearch
pass=`tr -cd 'a-zA-Z0-9!@#$%' </dev/urandom | head -c20`
#记录密码后,删除该文件
echo $pass > /tmp/pass
hash=`$ES_HOME/bin/hash_password.sh -p $pass`
echo $hash
#更新密码字段
cat <<EOF > $ES_HOME/config/security/user.yml
meta:
type: "user"
config_version: 2
# Define your internal users here
## Admin users
admin:
hash: "$hash"
reserved: true
external_roles:
- "admin"
description: "Admin user"
EOF
配置文件及 JVM 调整
cat <<EOF > /data/easysearch/config/easysearch.yml
cluster.name: infinilabs
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["node-1"]
path.home: /data/easysearch
path.data: /data/easysearch/data
path.logs: /data/easysearch/logs
http.compression: true
security.enabled: true
security.audit.type: noop
security.ssl.transport.cert_file: instance.crt
security.ssl.transport.key_file: instance.key
security.ssl.transport.ca_file: ca.crt
security.ssl.transport.skip_domain_verify: true
security.ssl.http.enabled: true
security.ssl.http.cert_file: instance.crt
security.ssl.http.key_file: instance.key
security.ssl.http.ca_file: ca.crt
security.allow_default_init_securityindex: true
security.nodes_dn:
- 'CN=infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
security.restapi.roles_enabled: [ "superuser", "security_rest_api_access" ]
security.system_indices.enabled: true
security.ssl.http.clientauth_mode: OPTIONAL
security.system_indices.indices: [".infini-*"]
#for admin dn
## specify admin certs to operate against system indices, basic_auth is not required
## curl -k --cert config/admin.crt --key config/admin.key -XDELETE 'https://localhost:9200/.infini-*/'
security.authcz.admin_dn:
- 'CN=admin.infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
EOF
#根据实际机器内存的大小进行配置,推荐配置为机器内存一半,且不超过31G
sed -i "s/1g/4g/g" $ES_HOME/config/jvm.options
备份目录及权限调整
#创建备份目录
mkdir -p /data/easysearch/backup
#更新目录权限
chown -R es.es /data/easysearch
环境变量及启动服务
su - es
grep -wq easysearch ~/.bashrc || cat<<EOF >> ~/.bashrc
export ES_HOME=/data/easysearch
EOF
source ~/.bashrc
#以后台方式启动服务
$ES_HOME/bin/easysearch -d
Easysearch 验证
curl -ku "admin:$pass" https://127.0.0.1:9200
curl -ku "admin:$pass" https://127.0.0.1:9200/_cluster/health?pretty
curl -ku "admin:$pass" https://127.0.0.1:9200/_cat/nodes?v
部署 Console
curl -sSL http://get.infini.sh | bash -s -- -p console
#安装服务并启动
cd /opt/console
./console-linux-arm64 -service install
./console-linux-arm64 -service start
#验证
systemctl status console
部署 Agent
curl -sSL http://get.infini.sh | bash -s -- -p agent
#修改Agent配置文件
cd /opt/agent
sed -i "/ES_ENDPOINT:/ s|\(.*\: \).*|\1$https://localhost:9200|" agent.yml
sed -i "/ES_USER:/ s|\(.*\: \).*|\1admin|" agent.yml
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
sed -i "/API_BINDING:/ s|\(.*\: \).*|\1\"0.0.0.0:8080\"|" agent.yml
head -n 5 agent.yml
#安装服务并启动
./agent-linux-arm64 -service install
./agent-linux-arm64 -service start
#验证
systemctl status agent
部署 Gateway
curl -sSL http://get.infini.sh | bash -s -- -p gateway
cd /opt/gateway
#修改Gateway配置文件
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
head -n 10 gateway.yml
#安装服务并启动
./gateway-linux-arm64 -service install
./gateway-linux-arm64 -service start
#检查服务
systemctl status gateway
curl -u "admin:$pass" http://127.0.0.1:8000
部署 Loadgen
curl -sSL http://get.infini.sh | bash -s -- -p loadgen
#写入数据测试
cd /opt/loadgen
mkdir -p mock
cat <<EOF > mock/nginx.log
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET / HTTP/1.1" 200 8676 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/bootstrap/css/bootstrap.css HTTP/1.1" 200 17235 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/daterangepicker/daterangepicker.css HTTP/1.1" 200 1700 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/v5-compat.css HTTP/1.1" 200 2091 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/font/raleway.css HTTP/1.1" 200 145 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/fork-awesome.css HTTP/1.1" 200 8401 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/overrides.css HTTP/1.1" 200 2524 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/theme.css HTTP/1.1" 200 306 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fancytree/css/ui.fancytree.css HTTP/1.1" 200 3456 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /syncthing/development/logbar.js HTTP/1.1" 200 486 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
EOF
cat <<EOF > loadgen.yml
env:
ES_USERNAME: admin
ES_PASSWORD: $pass
ES_ENDPOINT: http://localhost:8000
runner:
# total_rounds: 1
no_warm: false
# Whether to log all requests
log_requests: false
# Whether to log all requests with the specified response status
log_status_codes:
- 0
- 500
assert_invalid: false
assert_error: false
variables:
- name: ip
type: file
path: dict/ip.txt
- name: message
type: file
path: mock/nginx.log
replace: # replace special characters in the value
'"': '\"'
'\': '\\'
- name: user
type: file
path: dict/user.txt
- name: id
type: sequence
- name: uuid
type: uuid
- name: now_local
type: now_local
- name: now_utc
type: now_utc
- name: now_unix
type: now_unix
- name: suffix
type: range
from: 10
to: 13
requests:
- request:
method: POST
runtime_variables:
batch_no: uuid
runtime_body_line_variables:
routing_no: uuid
basic_auth:
username: $[[env.ES_USERNAME]]
password: $[[env.ES_PASSWORD]]
url: $[[env.ES_ENDPOINT]]/_bulk
body_repeat_times: 5000
body: |
{ "index" : { "_index" : "test-$[[suffix]]", "_id" : "$[[uuid]]" } }
{ "id" : "$[[uuid]]","routing_no" : "$[[routing_no]]","batch_number" : "$[[batch_no]]","message" : "$[[message]]","random_no" : "$[[suffix]]","ip" : "$[[ip]]","now_local" : "$[[now_local]]","now_unix" : "$[[now_unix]]" }
EOF
#执行测试
./loadgen-linux-arm64 -c 6 -d 6 --compress
#检查测试索引文档
curl -u "admin:$pass" http://127.0.0.1:8000/_cat/indices/test*?v
至此,完成在 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen。通过浏览器 http://安装机器 IP:9000/ 即可访问 Console,对 Easysearch 进行配置管理。
助力 Elasticsearch 国产化,极限科技受邀参加 2023 移动云大会
默认分类 • liaosy 发表了文章 • 0 个评论 • 4637 次浏览 • 2023-05-10 18:03
近日,2023 移动云大会“数据库&云原生创新”论坛 在苏州隆重召开。现场精英荟萃、专家云集,共同探讨数据库与云原生技术发展及应用落地方案,为助力推动云原生数据库产业发展建言献策。极限科技创始人兼 CEO 曾勇受邀出席论坛。

会上,极限科技创始人兼 CEO 曾勇针对《Elasticsearch 国产化在移动云的演进之路》主题进行演讲,演讲围绕了什么是 Elasticsearch 以及 Elasticsearch 在移动云上的国产化演进过程。
Elasticsearch 在移动云的演进
随着数字化转型的不断深化,非结构化数据日益成为各类组织数据的增长主力,但其在管理和应用方面仍面临模态多样、管理复杂、检索挖掘难度大等挑战。为此,极限科技与移动云共同研发出搜索型数据库软件 Easysearch。
“Easysearch” 是极限科技在 Elasticsearch 软件原版本基础上,立足中国企业需求,助力移动云打造更符合其需求,独具 8 大特色功能的自有开源平替版本系统。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
移动云版本 “Easysearch” 精简 Kernel ,只保留开源核心能力,回归轻量化;增强内核后,可更稳定可靠地支持万亿级数据规模;为进一步增强安全能力,系统支持字段内容脱敏的同时对字段级别采取权限控制;可降低灾难恢复时间,系统具备完整的备份与容灾能力,可实时切换;为更好地服务业务场景,此版本更关注搜索场景的优化;增强型中文分词,提供本地化的词库与拼音支持;增强数据压缩能力后,最高可降低 40%存储空间;信创兼容的系统,支持适配国产操作系统和 CPU 芯片。
目前 Elasticsearch 为移动云提供的后端架构,已由基于 Docker 容器的“移动云 ES v1.0”升级为基于 K8s 架构的“移动云 ES v2.0”版本。其优势可以体现在:
- 新版本更具自主可控性,应对新需求更具灵活性;
- 基于 K8s 架构的系统,能支持更大规模的集群服务;
- 在支持全链路 IPv6 和本地磁盘(IO 隔离)的基础上,实现了更优性能的升级。

Elasticsearch 在中国已有近十万+开发者,上万家企业已经在生产环境大规模运行 Elasticsearch,服务客户包括知名互联网公司及大型企事业单位,覆盖全国范围内生活消费、金融投资、娱乐学习、软件应用与安全等领域知名企业。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
极限科技创始成员多来自 Elasticsearch 中国团队,深耕搜索及 Elasticsearch 十多年,且运营有国内最大的开源搜索技术社区,极限科技团队具备雄厚的技术实力和丰富的相关行业经验技术积累。
国产化替代的首选方案“Easysearch”
目前实时大数据搜索分析,尤其是结构化和非结构化数据结合的场景和需求非常大。针对海量数据,搜索技术成为核心,大多数企业都有不止部署一套搜索后端服务来满足各个场景的搜索业务需求。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。该软件衍生自开源的搜索引擎软件 Elasticsearch,具备相当的接口兼容能力,对于目前国内广大的 Elasticsearch 用户来说切换和接入的成本非常低。
与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。基于团队在搜索和 Elasticsearch 生态的多年深耕,极限科技已具备完全自主自研可控能力,Easysearch 因更符合国产搜索技术生态需求,目前逐渐成为 Elasticsearch 国产化替代的首选方案。
作为一款具备自主可控的分布式近实时搜索型数据库产品 Easysearch 具备高性能、高可用、弹性伸缩、高安全性等特性,支持丰富的个性化搜索及聚合分析,且能承载 PB 级别的海量业务数据,可部署在物理机、虚拟机、容器、私有云和公有云,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,满足不同业务场景的各项复杂需求。
持续丰富完善企业级服务能力
随着国内搜索型数据库的迅速发展,关键技术逐渐突破,应用场景和数据规模也逐年上升,已经成为企业必不可少的核心基础设施,产业生态日益繁荣。
截至目前,极限科技与移动云合作共建的 Easysearch 系统,已在无锡、呼和浩特、南基这 3 个城市上线,此外还有北京、上海、重庆、宁波、海南等 9 个城市的资源池正在上线中。-- 极限科技创始人兼 CEO 曾勇介绍道。
作为全球领先的近实时搜索数据库技术提供商,极限科技始终致力于搜索核心技术的研发与创新,基于国内搜索型数据库行业生态需求,在产品研发创新上,着力提升产品易用性、实时性、降低 IT 成本等,为推动国内搜索行业技术水平及相关技术社区的发展,建设数据强国提供强有力的基础技术支撑。
极限科技自成立起始终致力于提供本地化配套产品及解决方案,帮助客户解决在使用 Elasticsearch 时遇到的各种挑战。未来,极限科技将基于更多的真实客户场景提供个性化服务,持续丰富并完善更多维度、更高需求的企业级服务能力,与移动云等众多行业平台一起构建更“简单”的搜索服务。
关于极限科技

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。让搜索更简单是我们追求的目标。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
更多详情参见官网 (https://infinilabs.com) 。
CDC、查询卸载与 AI 检索:达梦 × Easysearch 技术交流干货回顾
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2735 次浏览 • 5 天前
在金融行业数字化转型与信创建设持续推进的背景下,如何让国产数据库更好地支撑海量数据检索、实时分析与智能应用,成为越来越多企业关注的话题。
8 月 7 日,围绕 “达梦数据库 × Easysearch 金融行业搜索与分析加速方案”,我们开展了一场技术主题分享与交流活动。 由 极限科技技术专家杨帆 从金融行业实际业务需求出发,深入介绍了达梦数据库与 Easysearch 的协同架构,并围绕数据同步、查询卸载、性能优化以及国产化生态合作等问题,与参会伙伴展开了深入交流。

本次分享的核心方案,是通过 “达梦数据库 + CDC 实时同步 + Easysearch” 构建事务与检索分析分离的架构:达梦继续承担核心事务处理和主数据管理,Easysearch 则承接全文搜索、海量数据检索、多维分析以及 AI 检索等场景,让两套系统各司其职,共同提升数据服务能力。
一、为什么需要“数据库 + 搜索引擎”?
传统关系型数据库在 OLTP 场景下具有强一致性、事务处理和数据管理等优势,但当业务逐渐面临海量数据全文检索、多维聚合分析以及复杂搜索体验等需求时,单纯依赖数据库往往会面临新的挑战。

例如在金融场景中,交易明细、合同与制度文件、客户信息、日志数据等都需要被快速检索;与此同时,大量报表、聚合分析和历史数据查询又可能与核心交易业务争抢 CPU、IO 等资源。
分享中提到,达梦擅长 OLTP 事务处理、强一致性、数据安全与审计等能力,而在全文检索、相关性排序以及海量检索分析等方面,则可以通过 Easysearch 进行能力补充。
因此,方案的核心思路并不是简单地“用 Easysearch 替换数据库”,而是:
让数据库专注事务,让搜索引擎专注搜索与分析。
达梦负责写入、更新、事务一致性以及主数据管理;Easysearch 则负责从海量数据中快速“找出来、关联起来”,承接搜索、聚合、向量检索及 AI 等查询型负载。
二、CDC:连接事务库与检索分析库的关键纽带
在这样的架构中,如何让达梦中的数据及时同步到 Easysearch,是大家非常关注的问题。

本次方案采用 CDC 实时同步 的方式,整体链路包括三个阶段:
全量同步 → 增量同步 → 持续运行
首先将达梦存量数据同步至 Easysearch,建立数据基线;随后通过 CDC 持续捕获 INSERT、UPDATE、DELETE 等数据变化,并实时同步到 Easysearch,最终形成持续运行的数据同步链路。
在分享介绍的测试验证中,达梦 DM8 × Easysearch 已完成兼容认证测试,全量同步和增量同步均验证通过;在 CDC 高压同步测试中,万级变更可在 30 秒内完成同步,并实现读写一致、无积压。
三、现场技术交流:从“方案介绍”走向“实际问题”
相比单向的技术分享,本次活动更加精彩的部分,是分享结束后的互动交流。
围绕方案在真实生产环境中的落地,参会伙伴提出了多个非常有针对性的问题,分享老师也结合方案设计和实际经验进行了逐一解答。
1. CDC 延迟一般是多少?
CDC 是整个架构实现近实时数据同步的关键,因此大家首先关注了:
从达梦发生数据变更,到 Easysearch 可以查询到数据,中间通常存在多大的延迟?
这个问题实际上不仅涉及 CDC 本身,还与源端产生变更的速度、网络、同步任务处理能力以及目标端写入性能等多个因素相关。

在常规业务负载下,CDC 增量同步延迟可控制在秒级;如果业务变更量更高,可通过 Easysearch 动态扩容分片、增加 CDC 同步并发等方式进一步降低延迟,满足金融级近实时数据一致性要求。
2. 哪些查询适合留在达梦?哪些查询适合放到 Easysearch?
这是现场非常有代表性的一个问题。
实际上,“哪些数据进入 Easysearch”并不是简单按照表来划分,而更应该按照 业务访问模式和查询类型 来判断。
例如:
- 强事务、强一致性的核心业务操作,继续留在达梦;
- 精确查询、事务处理以及主数据维护,继续由达梦负责;
- 全文搜索、模糊查询、相关性排序等场景,可以交给 Easysearch;
- 海量数据检索、多维聚合分析、历史数据查询等,可以通过 Easysearch 进行查询卸载;
- 面向 AI 的向量检索、混合检索和 RAG 等场景,则可以进一步利用 Easysearch 的搜索能力。
这种“按负载类型进行职责分工”的方式,也是整个方案设计的核心。

3. 从搜索到分析:Easysearch 还能解决什么?
除了传统的全文检索,本次分享还介绍了 Easysearch 在海量数据分析、向量检索以及 AI 场景中的应用。

在全文搜索方面,Easysearch 支持 IK、拼音、HanLP 等中文分词能力,并提供 BM25 相关性评分、Function Score、高亮、同义词、搜索建议等能力。
在海量数据分析方面,则可以通过倒排索引、列式 Doc Values 以及聚合能力,承接交易明细分析、日志检索、客户行为分析以及风控等场景。
而在 AI 场景中,Easysearch 还可以进一步提供向量检索和全文检索融合能力,为 RAG、语义搜索、智能客服、推荐以及反欺诈等应用提供检索底座。
这意味着,数据库中的结构化数据经过同步之后,并不只是多了一个“搜索入口”,而是可以进一步形成 搜索、分析与 AI 多种数据服务能力。
4. 在国产数据库信创领域,达梦与 Easysearch 有哪些合作空间?
二者都是信创全栈适配的国产自主产品,合作空间非常广阔:
首先是联合解决方案落地:面向金融、运营商、政企等行业,提供“事务库 + 检索分析库”的信创标准架构,满足等保、密评要求,规避开源组件协议风险;
其次是国产化替代场景:Easysearch 可作为 Elasticsearch 的平滑替代产品,与达梦组合形成“去 IOE + 去开源 Elastic ”的全栈信创方案,目前已在中国移动、中国一汽等标杆项目中验证;

此外还有AI场景拓展:二者结合可支撑金融 RAG 知识库、智能风控、语义合规审查等 AI 应用,为信创环境下的智能化转型提供底座。
四、一次分享,也是一次技术碰撞
从达梦数据库到 Easysearch,从 CDC 到查询卸载,再到全文搜索、海量分析和 AI 检索,本次交流虽然围绕的是一个具体的技术方案,但大家讨论的其实是一个更加普遍的问题:
在信创和数字化转型背景下,如何让不同类型的数据基础设施发挥各自的优势,并最终服务于业务?
达梦与 Easysearch 的组合,并不是简单的“1+1”,而是通过职责分离,让事务处理、数据管理、搜索、分析和 AI 各自发挥所长。
技术分享有终点,技术交流没有终点。
感谢分享嘉宾的精彩内容,也感谢每一位参会伙伴的积极参与和深度交流。
期待下一次,我们继续围绕 搜索、数据库、数据分析、AI 与信创技术,碰撞出更多新的思路与实践。
达梦 × Easysearch,探索国产数据基础设施协同的新可能。
参考资源:
- PPT 下载:https://searchkit.cn/slides/347
- 达梦官网:https://dameng.com
- Easysearch 官网:https://easysearch.cn
Bboss v7.5.6 正式发布,全面兼容国产分布式搜索引擎 Easysearch
资讯动态 • INFINI Labs 小助手 发表了文章 • 0 个评论 • 13152 次浏览 • 2026-06-23 23:31
一、引言
2026 年 6 月 21 日,经过 Bboss 开源社区与极限科技(INFINI Labs)的紧密合作, Bboss v7.5.6 正式发布!
作为国内领先的 AI 智能体开发框架、数据采集同步 ETL 工具以及流批一体化计算引擎,Bboss 在本次更新中与国产分布式搜索引擎 Easysearch 完成深度兼容,其 Elasticsearch Java 客户端 全面兼容 Easysearch 1.x、2.x 全系列版本。开发者现在可以无缝使用 Bboss 客户端操作 Easysearch 集群,享受与 Elasticsearch 一致的开发体验。

二、Bboss Elasticsearch 客户端简介
Bboss 是一款高性能、高兼容性的搜索引擎 Java REST 客户端框架,基于 Apache License 2.0 开源,原生支持 Elasticsearch、Easysearch 和 Opensearch。
自带客户端集群节点负载均衡和容灾,多集群多数据源,自动索引托管,多种分页机制,傻瓜级 CRUD,脚本,SQL,JDBC,高亮,权重,聚合,IP,GEO 地理位置,父子嵌套,应有尽有。
核心特性
| 特性 | 说明 |
|---|---|
| 原生多引擎支持 | 完美支持 ES 1.x ~ 9.x、Easysearch 1.x ~ 2.x、Opensearch 1.x ~ 3.x |
| 学习成本低 | 无需学习额外 API,只需掌握 Elasticsearch DSL,极简使用方式 |
| 开箱即用 | Spring Boot 自动配置,无需复杂设置 |
| 高效异步处理 | 内置 BulkProcessor 异步批处理器,大幅提升写入性能 |
| 灵活查询方式 | 支持 DSL、SQL、O/R Mapping 多种查询模式 |
| 多数据源支持 | 一个应用可同时操作多个不同版本的搜索引擎集群 |
| 客户端负载均衡 | 默认启用客户端负载均衡,容灾性更好 |
| 完整的结果封装 | 返回结果支持 JSON、PO 对象、List 集合、Map 等多种类型 |
三、为什么选择 Bboss + Easysearch
将 Bboss 作为 Easysearch 的 Java 客户端,您将获得以下独特优势:
- 国产化技术栈:从底层搜索引擎到上层客户端框架,完全国产化自主可控,满足信创合规要求,无许可证风险。
- 极低迁移成本:如果您正在使用 Elasticsearch + Bboss 技术栈,切换到 Easysearch 几乎零成本,只需修改连接配置即可。
- 成熟稳定的客户端:Bboss 经过多年发展,已在国内众多企业和项目中得到广泛应用和验证,拥有活跃的中文社区和完善的文档支持。
- 丰富的生态能力:除了基础的 CRUD 操作,还提供数据采集 ETL、流批一体化计算、AI 智能体等丰富的扩展能力。
四、快速开始
通过以下简单步骤,即可在 Bboss 中接入 Easysearch:
1. 添加 Maven 依赖
<dependency>
<groupId>com.bbossgroups.plugins</groupId>
<artifactId>bboss-datatran-jdbc</artifactId>
<version>7.5.6</version>
</dependency>
2. 配置 Easysearch 连接
spring:
elasticsearch:
bboss:
elasticsearch:
rest:
hostNames: localhost:9200
useHttps: true # Easysearch 默认启用 HTTPS
elasticUser: admin
elasticPassword: your_password
3. 基础操作
@Service
public class DocumentService {
@Autowired
private BBossESStarter bbossESStarter;
// 插入文档
public void insertDocument() {
ClientInterface client = bbossESStarter.getRestClient();
Document doc = new Document();
doc.setId("1");
doc.setTitle("Easysearch 与 Bboss 集成");
doc.setContent("这是一篇关于集成的文章");
client.addDocument("documents", doc, "refresh=true");
}
// 查询文档
public Document getDocument(String id) {
ClientInterface client = bbossESStarter.getRestClient();
return client.getDocument("documents", id, Document.class);
}
// 按字段查询
public ESDatas<Document> searchByAuthor(String author) {
ClientInterface client = bbossESStarter.getRestClient();
return client.searchListByField(
"documents", "author.keyword", author,
Document.class, 0, 10
);
}
}
五、结语
Bboss v7.5.6 与 Easysearch 的深度兼容,是国产开源生态建设的又一重要成果。作为 Easysearch 原厂,我们欢迎更多像 Bboss 这样的优秀开源项目加入国产搜索引擎生态,共同推动国内搜索型数据库的发展与繁荣。
对于正在评估搜索引擎选型或计划进行国产替代的企业用户,Bboss + Easysearch 的组合无疑是值得信赖的选择。
立即体验 Easysearch,开启国产搜索引擎之旅:
- Easysearch 官网: https://easysearch.cn
- Bboss 官方文档: https://esdoc.bbossgroups.com
- Easysearch x Bboss 详细集成文档: https://docs.infinilabs.com/easysearch/main/docs/integrations/third-party/bboss
六、关于 Easysearch

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。作为国内领先的国产搜索引擎产品,Easysearch 具备以下核心优势:
1. 国产化自主可控
自主研发,符合信创要求,无许可证风险,为企业提供安全可靠的技术保障。在当前国际形势日益复杂、信创需求持续提升的大背景下,Easysearch 为政府、金融、电信、能源等关键行业提供了值得信赖的搜索引擎基础设施。
2. 轻量级架构
相比传统搜索引擎,Easysearch 资源占用更少,启动更快速,显著降低企业运维成本。其精简的架构设计使得在同等硬件条件下可以承载更多的业务负载,特别适合资源受限的私有化部署场景。
3. 卓越性能表现
查询性能优异,能够满足大部分业务场景需求,用户体验流畅。通过持续的内核优化和算法改进,Easysearch 在多项基准测试中展现出媲美甚至超越同类产品的性能水平。
4. 良好兼容性
与 Elasticsearch 的 API 接口基本兼容,迁移成本较低,保护用户现有投资。这一特性使得基于 Elasticsearch 开发的应用可以快速平滑地迁移至 Easysearch,大大降低了国产替代的技术门槛。
社区福利
为感谢广大社区开发者的支持,Bboss 与 Easysearch 厂商极限科技联合发起抽奖活动,奖品为开源T恤。6 月 29 日上午 10 点自动开奖,欢迎大家扫码抽奖参与。
搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎
Easysearch • liaosy 发表了文章 • 0 个评论 • 8682 次浏览 • 2025-10-20 15:54
大家好,我是 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)
- 官方网址:https://easysearch.cn
诞生背景:为什么要有 Easysearch?
Easysearch 由极限科技(INFINI Labs)团队推出。项目的起点源于团队长期在搜索引擎和大数据领域的深厚实践积累,团队深刻认识到国内企业在使用 Elasticsearch 时普遍面临以下痛点:
- 开源协议变化带来的商业风险 —— Elastic 于 2021 年将许可更改为 SSPL,导致社区分裂,增加了企业在合规和商用上的不确定性;
- 高并发与高可靠性场景下对稳定可控方案的需求 —— 企业级应用亟需一个性能可靠、可深度优化的搜索基础设施;
- 技术栈自主可控的迫切需求 —— 随着国产化进程加快,国内生态中缺乏轻量化、易部署、且完全可控的搜索引擎产品;
- 本地化服务与快速响应能力的缺口 —— 国内企业更需要本地团队提供高效的技术支持与服务,对本土化、个性化功能需求能得到及时响应与反馈。
基于这些考虑,Easysearch 在设计之初就明确了目标:构建一款兼容 Elasticsearch API、简洁易用、性能出众且完全自主可控的国产搜索引擎。
核心特性
- 轻量级:安装包大小不到 60 MB,安装部署简洁,资源占用低,开箱即用;
- 跨平台:支持主流操作系统和 CPU 架构,支持国产信创运行环境;
- 高性能:针对不同场景进行的极致优化,可用更少硬件成本获得更高服务性能,降本增效。
- 稳定可靠:修复大量内核问题,解决内存泄露,集群卡顿、查询缓慢等问题,久经严苛业务环境考验。
- 安全增强:默认就提供完整的企业级安全功能,支持 LDAP/AD 集成,支持索引、文档、字段粒度细权管控。
- 兼容性强:兼容 Elasticsearch 7.x 的 REST API 和数据格式,迁移成本低;
- 可视化运维:无需 Kibana 即可通过内置 Web UI 插件界面管理索引、节点与监控指标等。
对比优势
| 对比维度 | Easysearch | Elasticsearch | OpenSearch |
|---|---|---|---|
| 用户协议 | 社区免费+商业授权 | SSPL/AGPL v3 | Apache 2.0 |
| API 兼容性 | 高度兼容 ES | 原生 | 高度兼容 ES |
| 最小安装体积 | 57MB | 482MB | 682MB |
| 部署复杂度 | 简单 | 中等 | 相对复杂 |
| 信创环境支持 | 全面兼容 | 无 | 无 |
| 可视化管理 | 开箱即用管理后台 | 需独立部署 Kibana | 需独立部署 OpenSearch Dashboards |
| 本地化与中文支持 | 强 | 弱 | 弱 |
| AI 插件支持 | 较弱 | 强 | 较强 |
| 社区与生态 | 快速成长中 | 成熟广泛 | 活跃增长 |
快速开始:5 分钟体验 Easysearch
1. 使用 Docker 启动
# 直接运行镜像使用随机密码(数据及配置未持久化)
docker run --name easysearch \
--ulimit memlock=-1:-1 \
-p 9200:9200 \
infinilabs/easysearch:1.15.4
2. 验证集群状态
curl -ku "username:password" -X GET "https://localhost:9200/"
返回结果示例:
{
"name": "easysearch-node",
"cluster_name": "easysearch-6yhwn91v80gf",
"cluster_uuid": "Gfu_fuF1QViJfeUWVbiFCA",
"version": {
"distribution": "easysearch",
"number": "1.15.4",
"distributor": "INFINI Labs",
"build_hash": "9110128946b0af3de639966cfa74b5498346949d",
"build_date": "2025-10-14T03:30:41.948590Z",
"build_snapshot": false,
"lucene_version": "8.11.4",
"minimum_wire_lucene_version": "7.7.0",
"minimum_lucene_index_compatibility_version": "7.7.0"
},
"tagline": "You Know, For Easy Search!"
}
3. 索引与搜索示例
# 写入文档
curl -ku "username:password" -X POST "https://localhost:9200/my_index/_doc" -H 'Content-Type: application/json' -d'
{
"title": "Easysearch 入门",
"content": "这是一个轻量级搜索引擎的示例文档。",
"tags": ["搜索", "国产", "轻量级"]
}'
# 搜索文档
curl -ku "username:password" -X GET "https://localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "搜索引擎"
}
}
}'
4. 使用 Easysearch UI
Easysearch 提供了轻量级界面化管理功能,不再依赖第三方组件即可对集群进行管理,真正做到开箱即用。如果你安装了 Easysearch UI 插件或者下载捆绑包,可通过 https://localhost:9200/\_ui/ 访问,进行节点、索引、分片、查询调试和监控查看等管理。
图 1:系统登录

图 2:集群概览

图 3:节点列表

图 4:节点概览

图 5:索引列表

图 6:索引概览

图 7:分片管理

图 8:开发工具

以上仅列出了一些基本功能,其他如安全管理、主从复制、备份管理、生命周期管理等更多高级功能由于篇幅限制不一一展示,有兴趣的朋友可自行部署探索。
结语
Easysearch 的诞生,不仅填补了国产搜索引擎在分布式与轻量化领域的空白,也让更多企业在面对开源协议变动与外部技术依赖时,拥有了更加安全、灵活、可控的选择。
它既是国产替代方案的有力代表,更是新一代搜索技术生态的积极探索者,为企业级实时搜索与分析带来新的可能。
🚀 下期预告
下一篇我们将介绍 一款 AI 驱动的现代搜索引擎 - Meilisearch,基于 Rust 构建的开源搜索引擎,性能高、部署简单。号称比 Elasticsearch 快 10 倍,真的这么牛吗?
💬 三连互动
- 你是否在使用或考虑国产搜索替代方案?
- 在实际项目中,你最看重搜索引擎的哪些特性?(性能、兼容性、运维、成本)
- 对 Easysearch 有什么功能上的期待?
对搜索技术感兴趣的朋友,也欢迎加我微信(ID:lsy965145175)备注“搜索百科”,拉你进 搜索技术交流群,一起探讨与学习!
✨ 推荐阅读
- 搜索百科(4):OpenSearch — 开源搜索的新选择
- 搜索百科(3):Elasticsearch — 搜索界的"流量明星"
- 搜索百科(2):Apache Solr — 企业级搜索的开源先锋
- 搜索百科(1):Lucene — 打开现代搜索世界的第一扇门
🔗 参考资源
原文:https://infinilabs.cn/blog/2025/search-wiki-5-easysearch/
Easysearch 国产替代 Elasticsearch:8 大核心问题解读
Easysearch • liaosy 发表了文章 • 0 个评论 • 14636 次浏览 • 2025-09-18 09:43
近年来,随着数据安全与自主可控需求的不断提升,越来越多的企业开始关注国产化的搜索与日志分析解决方案。作为极限科技推出的国产 Elasticsearch 替代产品,Easysearch 凭借其对搜索场景的深入优化、轻量级架构设计以及对 ES 生态的高度兼容,成为众多企业替代 Elasticsearch 的新选择。

我们在近期与用户的交流中,整理出了大家最关心的八大问题,并将它们浓缩为一篇技术解读,希望帮助你快速了解 Easysearch 的优势与定位。
用户最关心的八大问题
- Easysearch 对数据量的支撑能力如何,能应对 PB 级数据存储吗?
答:完全可以。Easysearch 支持水平扩展,通过增加节点即可线性提升存储与计算能力。在实际应用中,已成功支撑 PB 级日志与检索数据。同时,其存储压缩率相比 Elasticsearch 7.10.2 平均高出 2.5~3 倍,显著节省硬件成本。
- 在高并发写入场景下,Easysearch 和 ES 的性能差异有多大?
答:在相同硬件配置下,使用 Nginx 日志进行 bulk 写入压测,Easysearch 在多种分片配置下的写入性能相比 Elasticsearch 7.10.2 提升 40%-70%,更适合高并发写入场景。
- 是否支持中文分词?需要额外插件吗?
答:中文分词一直是 Elasticsearch 用户的「必装插件」。而在 Easysearch 中,中文分词是开箱即用的,同时支持 ik、pinyin 等主流分词器,还能自定义词典,方便电商、内容平台等场景。
- 从 ES 迁移到 Easysearch 是否复杂?会影响业务吗?
答:迁移往往是国产替代的最大顾虑。为此,Easysearch 提供了 极限网关 工具,支持全量同步和实时增量同步。迁移过程中业务可继续读写,只需短暂切换连接地址,几乎无感知。
- 监控与运维工具是否完善?是否支持 Kibana?
答:Easysearch 提供完整的监控与运维体系。从 Easysearch 1.15.x 版本起自带 Web UI 管理控制台(类似简化版 Kibana),支持索引管理、查询调试、权限控制等功能。同时还提供 INFINI Console 实现多集群管理与深度监控等。也可以通过配置让 Kibana 连接 Easysearch(部分高级功能可能受限)。
- 小型团队技术能力有限,用 Easysearch 运维难度高吗?
答:Easysearch 的一大设计理念就是降低运维门槛。Easysearch 提供一键部署脚本,减少手动配置参数,支持自动分片均衡与故障节点恢复,无需专职运维人员也能稳定运行,非常适合技术资源有限的团队。
- Easysearch 是否支持数据备份与恢复?操作复杂吗?
答:支持快照(Snapshot),可备份到本地磁盘或对象存储(S3、OSS 等)。恢复时仅需执行快照恢复命令,满足企业级数据安全需求。
- 对比 ES,Easysearch 在使用体验上最大的不同是什么?
答:Easysearch 保持与 Elasticsearch 类似的接口与查询 DSL,用户几乎无学习成本即可上手。同时,它针对国产化环境和搜索场景做了优化,运维更轻量,成本更可控。
结语:Easysearch,国产化搜索的新选择
作为一款国产自主可控的搜索与日志分析引擎,Easysearch 不仅继承了 Elasticsearch 的核心能力,更在性能、易用性、资源效率和中文支持等方面进行了深度优化。对于希望实现国产化替代、降低运维成本、提升系统性能的企业来说,Easysearch 是一个值得认真考虑的新选择。

如果你正在评估 Elasticsearch 的替代方案,不妨从 Easysearch 开始,体验更轻量、更高效的搜索新架构。
如需了解更多技术细节与使用案例,欢迎访问官方文档与社区资源:
- Easysearch 官网文档
- Elasticsearch VS Easysearch 性能测试
- 使用 Easysearch,日志存储少一半
- Kibana OSS 7.10.2 连接 Easysearch
- 自建 ES 集群通过极限网关无缝迁移到云上
- INFINI Console 一站式的数据搜索分析与管理平台

让 Easysearch 运行在 LoongArch(3C5000L) 上
Easysearch • Hardy 发表了文章 • 3 个评论 • 3121 次浏览 • 2023-09-11 12:53
简介
在上一次,我介绍了在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen,小伙伴们可查看原文。今天我重点介绍下在 Loongnix-Server Linux release 8.4.1 (3C5000L)上安装 Easysearch。
系统配置
在安装之前,需要先进行系统参数调整并创建操作用户,以下命令均需要使用 root 用户操作。
#配置nofile和memlock
tee /etc/security/limits.d/21-infini.conf <<-'EOF'
* soft nofile 1048576
* hard nofile 1048576
* soft memlock unlimited
* hard memlock unlimited
root soft nofile 1048576
root hard nofile 1048576
root soft memlock unlimited
root hard memlock unlimited
EOF
#关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
grep -i HugePages_Total /proc/meminfo
grep -wq transparent_hugepage /etc/rc.local || cat <<-'EOF' >> /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod 755 /etc/rc.local
#内核调优
tee /etc/sysctl.d/70-infini.conf <<-'EOF'
vm.max_map_count = 262145
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 900
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535
EOF
sysctl -p /etc/sysctl.d/70-infini.conf
用户配置
#创建Easysearch操作用户
groupadd -g 602 es
useradd -u 602 -g es -m -d /home/es -c 'easysearch' -s /bin/bash es
配置 JDK
#在各个节点上分别操作
wget -N http://ftp.loongnix.cn/Java/openjdk17/loongson17.4.0-fx-jdk17.0.6_10-linux-loongarch64.tar.gz -P /usr/src
mkdir -p /usr/local/jdk
tar -zxf /usr/src/loongson*.tar.gz -C /usr/local/jdk --strip-components 1
tee /etc/profile.d/java.sh <<-'EOF'
# set java environment
JAVA_HOME=/usr/local/jdk
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
EOF
source /etc/profile
java -version
Easysearch 部署
部署及密码配置
#在线安装
curl -sSL http://get.infini.sh | bash -s -- -p easysearch -d /data/easysearch
#初始化证书(若不采用默认证书,如需要调整证书可修改证书生成文件)
cd /data/easysearch
#默认会生成随机密码
bin/initialize.sh
ll /data/easysearch/config/{*.crt,*.key,*.pem}
配置文件及 JVM 调整
cat <<EOF > /data/easysearch/config/easysearch.yml
cluster.name: infinilabs
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["node-1"]
path.home: /data/easysearch
path.data: /data/easysearch/data
path.logs: /data/easysearch/logs
http.compression: true
security.enabled: true
security.audit.type: noop
security.ssl.transport.cert_file: instance.crt
security.ssl.transport.key_file: instance.key
security.ssl.transport.ca_file: ca.crt
security.ssl.transport.skip_domain_verify: true
security.ssl.http.enabled: true
security.ssl.http.cert_file: instance.crt
security.ssl.http.key_file: instance.key
security.ssl.http.ca_file: ca.crt
security.allow_default_init_securityindex: true
security.nodes_dn:
- 'CN=infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
security.restapi.roles_enabled: [ "superuser", "security_rest_api_access" ]
security.system_indices.enabled: true
security.ssl.http.clientauth_mode: OPTIONAL
security.system_indices.indices: [".infini-*"]
#for admin dn
## specify admin certs to operate against system indices, basic_auth is not required
## curl -k --cert config/admin.crt --key config/admin.key -XDELETE 'https://localhost:9200/.infini-*/'
security.authcz.admin_dn:
- 'CN=admin.infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
EOF
#根据实际机器内存的大小进行配置,推荐配置为机器内存一半,且不超过31G
sed -i "s/1g/4g/g" $ES_HOME/config/jvm.options
备份目录及权限调整
#创建备份目录
mkdir -p /data/easysearch/backup
#更新目录权限
chown -R es.es /data/easysearch
环境变量及启动服务
su - es
grep -wq easysearch ~/.bashrc || cat<<EOF >> ~/.bashrc
export ES_HOME=/data/easysearch
EOF
source ~/.bashrc
#jna替换<龙芯平台有独立的jna实现>
rm -rvf $ES_HOME/lib/jna*.jar
wget -N https://release.infinilabs.com/easysearch/archive/jna/loongarch64/jna-5.12.1.jar -P $ES_HOME/lib
#以后台方式启动服务
$ES_HOME/bin/easysearch -d
Easysearch 验证
curl -ku "admin:$pass" https://127.0.0.1:9200
curl -ku "admin:$pass" https://127.0.0.1:9200/_cluster/health?pretty
curl -ku "admin:$pass" https://127.0.0.1:9200/_cat/nodes?v
部署 Console
curl -sSL http://get.infini.sh | bash -s -- -p console
#安装服务并启动
cd /opt/console
./console-linux-loong64 -service install
./console-linux-loong64 -service start
#验证
systemctl status console
部署 Agent
curl -sSL http://get.infini.sh | bash -s -- -p agent
#修改Agent配置文件
cd /opt/agent
sed -i "/ES_ENDPOINT:/ s|\(.*\: \).*|\1$https://localhost:9200|" agent.yml
sed -i "/ES_USER:/ s|\(.*\: \).*|\1admin|" agent.yml
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
sed -i "/API_BINDING:/ s|\(.*\: \).*|\1\"0.0.0.0:8080\"|" agent.yml
head -n 5 agent.yml
#安装服务并启动
./agent-linux-loong64 -service install
./agent-linux-loong64 -service start
#验证
systemctl status agent
部署 Gateway
curl -sSL http://get.infini.sh | bash -s -- -p gateway
cd /opt/gateway
#修改Gateway配置文件
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
head -n 10 gateway.yml
#安装服务并启动
./gateway-linux-loong64 -service install
./gateway-linux-loong64 -service start
#检查服务
systemctl status gateway
curl -u "admin:$pass" http://127.0.0.1:8000
部署 Loadgen
curl -sSL http://get.infini.sh | bash -s -- -p loadgen
#写入数据测试
cd /opt/loadgen
mkdir -p mock
cat <<EOF > mock/nginx.log
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET / HTTP/1.1" 200 8676 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/bootstrap/css/bootstrap.css HTTP/1.1" 200 17235 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/daterangepicker/daterangepicker.css HTTP/1.1" 200 1700 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/v5-compat.css HTTP/1.1" 200 2091 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/font/raleway.css HTTP/1.1" 200 145 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/fork-awesome.css HTTP/1.1" 200 8401 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/overrides.css HTTP/1.1" 200 2524 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/theme.css HTTP/1.1" 200 306 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fancytree/css/ui.fancytree.css HTTP/1.1" 200 3456 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /syncthing/development/logbar.js HTTP/1.1" 200 486 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
EOF
cat <<EOF > loadgen.yml
env:
ES_USERNAME: admin
ES_PASSWORD: $pass
ES_ENDPOINT: http://localhost:8000
runner:
# total_rounds: 1
no_warm: false
# Whether to log all requests
log_requests: false
# Whether to log all requests with the specified response status
log_status_codes:
- 0
- 500
assert_invalid: false
assert_error: false
variables:
- name: ip
type: file
path: dict/ip.txt
- name: message
type: file
path: mock/nginx.log
replace: # replace special characters in the value
'"': '\"'
'\': '\\'
- name: user
type: file
path: dict/user.txt
- name: id
type: sequence
- name: uuid
type: uuid
- name: now_local
type: now_local
- name: now_utc
type: now_utc
- name: now_unix
type: now_unix
- name: suffix
type: range
from: 10
to: 13
requests:
- request:
method: POST
runtime_variables:
batch_no: uuid
runtime_body_line_variables:
routing_no: uuid
basic_auth:
username: $[[env.ES_USERNAME]]
password: $[[env.ES_PASSWORD]]
url: $[[env.ES_ENDPOINT]]/_bulk
body_repeat_times: 5000
body: |
{ "index" : { "_index" : "test-$[[suffix]]", "_id" : "$[[uuid]]" } }
{ "id" : "$[[uuid]]","routing_no" : "$[[routing_no]]","batch_number" : "$[[batch_no]]","message" : "$[[message]]","random_no" : "$[[suffix]]","ip" : "$[[ip]]","now_local" : "$[[now_local]]","now_unix" : "$[[now_unix]]" }
EOF
#执行测试
./loadgen-linux-loong64 -c 6 -d 6 --compress
#检查测试索引文档
curl -u "admin:$pass" http://127.0.0.1:8000/_cat/indices/test*?v
至此,完成在 LoongArch(3C5000L)上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen。通过浏览器 http://机器域名:9000/ 即可访问 Console,对 Easysearch 进行配置管理。
可能遇到的问题

检查下配置文件中监听的地址是否正确,防火墙是否有关闭。

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
让 Easysearch 运行在 Kylin V10 (Lance)-aarch64 上
Easysearch • Hardy 发表了文章 • 0 个评论 • 4580 次浏览 • 2023-06-07 11:08
简介
本文主要介绍在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen
系统配置
在安装之前,需要先进行系统参数调整并创建操作用户,以下命令均需要使用 root 用户操作。
#配置nofile和memlock
tee /etc/security/limits.d/21-infini.conf <<-'EOF'
* soft nofile 1048576
* hard nofile 1048576
* soft memlock unlimited
* hard memlock unlimited
root soft nofile 1048576
root hard nofile 1048576
root soft memlock unlimited
root hard memlock unlimited
EOF
#关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
grep -i HugePages_Total /proc/meminfo
grep -wq transparent_hugepage /etc/rc.local || cat <<-'EOF' >> /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod 755 /etc/rc.local
#内核调优
tee /etc/sysctl.d/70-infini.conf <<-'EOF'
vm.max_map_count = 262145
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 900
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535
EOF
sysctl -p /etc/sysctl.d/70-infini.conf
用户配置
#创建Easysearch操作用户
groupadd -g 602 es
useradd -u 602 -g es -m -d /home/es -c 'easysearch' -s /bin/bash es
配置 JDK
#在各个节点上分别操作
wget -N https://release.infinilabs.com/easysearch/jdk/zulu17.40.19-ca-jdk17.0.6-linux_aarch64.tar.gz -P /usr/src
mkdir -p /usr/local/jdk
tar -zxf /usr/src/zulu*.tar.gz -C /usr/local/jdk --strip-components 1
tee /etc/profile.d/java.sh <<-'EOF'
# set java environment
JAVA_HOME=/usr/local/jdk
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
EOF
source /etc/profile
java -version
Easysearch 部署
部署及密码配置
#在线安装
curl -sSL http://get.infini.sh | bash -s -- -p easysearch -d /data/easysearch
#初始化证书(若不采用默认证书,如需要调整证书可修改证书生成文件)
cd /data/easysearch
bin/initialize.sh
ll /data/easysearch/config/{*.crt,*.key,*.pem}
#调整默认密码及服务配置文件
export ES_HOME=/data/easysearch
pass=`tr -cd 'a-zA-Z0-9!@#$%' </dev/urandom | head -c20`
#记录密码后,删除该文件
echo $pass > /tmp/pass
hash=`$ES_HOME/bin/hash_password.sh -p $pass`
echo $hash
#更新密码字段
cat <<EOF > $ES_HOME/config/security/user.yml
meta:
type: "user"
config_version: 2
# Define your internal users here
## Admin users
admin:
hash: "$hash"
reserved: true
external_roles:
- "admin"
description: "Admin user"
EOF
配置文件及 JVM 调整
cat <<EOF > /data/easysearch/config/easysearch.yml
cluster.name: infinilabs
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["node-1"]
path.home: /data/easysearch
path.data: /data/easysearch/data
path.logs: /data/easysearch/logs
http.compression: true
security.enabled: true
security.audit.type: noop
security.ssl.transport.cert_file: instance.crt
security.ssl.transport.key_file: instance.key
security.ssl.transport.ca_file: ca.crt
security.ssl.transport.skip_domain_verify: true
security.ssl.http.enabled: true
security.ssl.http.cert_file: instance.crt
security.ssl.http.key_file: instance.key
security.ssl.http.ca_file: ca.crt
security.allow_default_init_securityindex: true
security.nodes_dn:
- 'CN=infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
security.restapi.roles_enabled: [ "superuser", "security_rest_api_access" ]
security.system_indices.enabled: true
security.ssl.http.clientauth_mode: OPTIONAL
security.system_indices.indices: [".infini-*"]
#for admin dn
## specify admin certs to operate against system indices, basic_auth is not required
## curl -k --cert config/admin.crt --key config/admin.key -XDELETE 'https://localhost:9200/.infini-*/'
security.authcz.admin_dn:
- 'CN=admin.infini.cloud,OU=UNIT,O=ORG,L=NI,ST=FI,C=IN'
EOF
#根据实际机器内存的大小进行配置,推荐配置为机器内存一半,且不超过31G
sed -i "s/1g/4g/g" $ES_HOME/config/jvm.options
备份目录及权限调整
#创建备份目录
mkdir -p /data/easysearch/backup
#更新目录权限
chown -R es.es /data/easysearch
环境变量及启动服务
su - es
grep -wq easysearch ~/.bashrc || cat<<EOF >> ~/.bashrc
export ES_HOME=/data/easysearch
EOF
source ~/.bashrc
#以后台方式启动服务
$ES_HOME/bin/easysearch -d
Easysearch 验证
curl -ku "admin:$pass" https://127.0.0.1:9200
curl -ku "admin:$pass" https://127.0.0.1:9200/_cluster/health?pretty
curl -ku "admin:$pass" https://127.0.0.1:9200/_cat/nodes?v
部署 Console
curl -sSL http://get.infini.sh | bash -s -- -p console
#安装服务并启动
cd /opt/console
./console-linux-arm64 -service install
./console-linux-arm64 -service start
#验证
systemctl status console
部署 Agent
curl -sSL http://get.infini.sh | bash -s -- -p agent
#修改Agent配置文件
cd /opt/agent
sed -i "/ES_ENDPOINT:/ s|\(.*\: \).*|\1$https://localhost:9200|" agent.yml
sed -i "/ES_USER:/ s|\(.*\: \).*|\1admin|" agent.yml
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
sed -i "/API_BINDING:/ s|\(.*\: \).*|\1\"0.0.0.0:8080\"|" agent.yml
head -n 5 agent.yml
#安装服务并启动
./agent-linux-arm64 -service install
./agent-linux-arm64 -service start
#验证
systemctl status agent
部署 Gateway
curl -sSL http://get.infini.sh | bash -s -- -p gateway
cd /opt/gateway
#修改Gateway配置文件
sed -i "/ES_PASS:/ s|\(.*\: \).*|\1$pass|" gateway.yml
head -n 10 gateway.yml
#安装服务并启动
./gateway-linux-arm64 -service install
./gateway-linux-arm64 -service start
#检查服务
systemctl status gateway
curl -u "admin:$pass" http://127.0.0.1:8000
部署 Loadgen
curl -sSL http://get.infini.sh | bash -s -- -p loadgen
#写入数据测试
cd /opt/loadgen
mkdir -p mock
cat <<EOF > mock/nginx.log
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET / HTTP/1.1" 200 8676 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/bootstrap/css/bootstrap.css HTTP/1.1" 200 17235 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/daterangepicker/daterangepicker.css HTTP/1.1" 200 1700 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/v5-compat.css HTTP/1.1" 200 2091 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/font/raleway.css HTTP/1.1" 200 145 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fork-awesome/css/fork-awesome.css HTTP/1.1" 200 8401 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/overrides.css HTTP/1.1" 200 2524 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /assets/css/theme.css HTTP/1.1" 200 306 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /vendor/fancytree/css/ui.fancytree.css HTTP/1.1" 200 3456 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
175.10.75.216 - - [28/Jul/2020:21:20:26 +0800] "GET /syncthing/development/logbar.js HTTP/1.1" 200 486 "http://dl-console.elasticsearch.cn/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
EOF
cat <<EOF > loadgen.yml
env:
ES_USERNAME: admin
ES_PASSWORD: $pass
ES_ENDPOINT: http://localhost:8000
runner:
# total_rounds: 1
no_warm: false
# Whether to log all requests
log_requests: false
# Whether to log all requests with the specified response status
log_status_codes:
- 0
- 500
assert_invalid: false
assert_error: false
variables:
- name: ip
type: file
path: dict/ip.txt
- name: message
type: file
path: mock/nginx.log
replace: # replace special characters in the value
'"': '\"'
'\': '\\'
- name: user
type: file
path: dict/user.txt
- name: id
type: sequence
- name: uuid
type: uuid
- name: now_local
type: now_local
- name: now_utc
type: now_utc
- name: now_unix
type: now_unix
- name: suffix
type: range
from: 10
to: 13
requests:
- request:
method: POST
runtime_variables:
batch_no: uuid
runtime_body_line_variables:
routing_no: uuid
basic_auth:
username: $[[env.ES_USERNAME]]
password: $[[env.ES_PASSWORD]]
url: $[[env.ES_ENDPOINT]]/_bulk
body_repeat_times: 5000
body: |
{ "index" : { "_index" : "test-$[[suffix]]", "_id" : "$[[uuid]]" } }
{ "id" : "$[[uuid]]","routing_no" : "$[[routing_no]]","batch_number" : "$[[batch_no]]","message" : "$[[message]]","random_no" : "$[[suffix]]","ip" : "$[[ip]]","now_local" : "$[[now_local]]","now_unix" : "$[[now_unix]]" }
EOF
#执行测试
./loadgen-linux-arm64 -c 6 -d 6 --compress
#检查测试索引文档
curl -u "admin:$pass" http://127.0.0.1:8000/_cat/indices/test*?v
至此,完成在 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen。通过浏览器 http://安装机器 IP:9000/ 即可访问 Console,对 Easysearch 进行配置管理。
助力 Elasticsearch 国产化,极限科技受邀参加 2023 移动云大会
默认分类 • liaosy 发表了文章 • 0 个评论 • 4637 次浏览 • 2023-05-10 18:03
近日,2023 移动云大会“数据库&云原生创新”论坛 在苏州隆重召开。现场精英荟萃、专家云集,共同探讨数据库与云原生技术发展及应用落地方案,为助力推动云原生数据库产业发展建言献策。极限科技创始人兼 CEO 曾勇受邀出席论坛。

会上,极限科技创始人兼 CEO 曾勇针对《Elasticsearch 国产化在移动云的演进之路》主题进行演讲,演讲围绕了什么是 Elasticsearch 以及 Elasticsearch 在移动云上的国产化演进过程。
Elasticsearch 在移动云的演进
随着数字化转型的不断深化,非结构化数据日益成为各类组织数据的增长主力,但其在管理和应用方面仍面临模态多样、管理复杂、检索挖掘难度大等挑战。为此,极限科技与移动云共同研发出搜索型数据库软件 Easysearch。
“Easysearch” 是极限科技在 Elasticsearch 软件原版本基础上,立足中国企业需求,助力移动云打造更符合其需求,独具 8 大特色功能的自有开源平替版本系统。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
移动云版本 “Easysearch” 精简 Kernel ,只保留开源核心能力,回归轻量化;增强内核后,可更稳定可靠地支持万亿级数据规模;为进一步增强安全能力,系统支持字段内容脱敏的同时对字段级别采取权限控制;可降低灾难恢复时间,系统具备完整的备份与容灾能力,可实时切换;为更好地服务业务场景,此版本更关注搜索场景的优化;增强型中文分词,提供本地化的词库与拼音支持;增强数据压缩能力后,最高可降低 40%存储空间;信创兼容的系统,支持适配国产操作系统和 CPU 芯片。
目前 Elasticsearch 为移动云提供的后端架构,已由基于 Docker 容器的“移动云 ES v1.0”升级为基于 K8s 架构的“移动云 ES v2.0”版本。其优势可以体现在:
- 新版本更具自主可控性,应对新需求更具灵活性;
- 基于 K8s 架构的系统,能支持更大规模的集群服务;
- 在支持全链路 IPv6 和本地磁盘(IO 隔离)的基础上,实现了更优性能的升级。

Elasticsearch 在中国已有近十万+开发者,上万家企业已经在生产环境大规模运行 Elasticsearch,服务客户包括知名互联网公司及大型企事业单位,覆盖全国范围内生活消费、金融投资、娱乐学习、软件应用与安全等领域知名企业。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
极限科技创始成员多来自 Elasticsearch 中国团队,深耕搜索及 Elasticsearch 十多年,且运营有国内最大的开源搜索技术社区,极限科技团队具备雄厚的技术实力和丰富的相关行业经验技术积累。
国产化替代的首选方案“Easysearch”
目前实时大数据搜索分析,尤其是结构化和非结构化数据结合的场景和需求非常大。针对海量数据,搜索技术成为核心,大多数企业都有不止部署一套搜索后端服务来满足各个场景的搜索业务需求。-- 极限科技创始人兼 CEO 曾勇在会上介绍道
Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。该软件衍生自开源的搜索引擎软件 Elasticsearch,具备相当的接口兼容能力,对于目前国内广大的 Elasticsearch 用户来说切换和接入的成本非常低。
与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。基于团队在搜索和 Elasticsearch 生态的多年深耕,极限科技已具备完全自主自研可控能力,Easysearch 因更符合国产搜索技术生态需求,目前逐渐成为 Elasticsearch 国产化替代的首选方案。
作为一款具备自主可控的分布式近实时搜索型数据库产品 Easysearch 具备高性能、高可用、弹性伸缩、高安全性等特性,支持丰富的个性化搜索及聚合分析,且能承载 PB 级别的海量业务数据,可部署在物理机、虚拟机、容器、私有云和公有云,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,满足不同业务场景的各项复杂需求。
持续丰富完善企业级服务能力
随着国内搜索型数据库的迅速发展,关键技术逐渐突破,应用场景和数据规模也逐年上升,已经成为企业必不可少的核心基础设施,产业生态日益繁荣。
截至目前,极限科技与移动云合作共建的 Easysearch 系统,已在无锡、呼和浩特、南基这 3 个城市上线,此外还有北京、上海、重庆、宁波、海南等 9 个城市的资源池正在上线中。-- 极限科技创始人兼 CEO 曾勇介绍道。
作为全球领先的近实时搜索数据库技术提供商,极限科技始终致力于搜索核心技术的研发与创新,基于国内搜索型数据库行业生态需求,在产品研发创新上,着力提升产品易用性、实时性、降低 IT 成本等,为推动国内搜索行业技术水平及相关技术社区的发展,建设数据强国提供强有力的基础技术支撑。
极限科技自成立起始终致力于提供本地化配套产品及解决方案,帮助客户解决在使用 Elasticsearch 时遇到的各种挑战。未来,极限科技将基于更多的真实客户场景提供个性化服务,持续丰富并完善更多维度、更高需求的企业级服务能力,与移动云等众多行业平台一起构建更“简单”的搜索服务。
关于极限科技

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。让搜索更简单是我们追求的目标。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
更多详情参见官网 (https://infinilabs.com) 。

