不要急,总有办法的

Easy-Es 2.1.0-easysearch 版本发布

EasysearchINFINI Labs 小助手 发表了文章 • 0 个评论 • 2800 次浏览 • 6 天前 • 来自相关话题

![](https://infinilabs.cn/img/blog ... er.png)

01 | 版本更新概述


经过极限科技与 Dromara 开源社区下 Easy-Es 项目的紧密合作与共同努力,我们很荣幸地联合推出 Easy-Es 2.1.0-easysearch 版本!

作为双方携手打造的第一个合作成果,本版本已正式发布:

  • 源码仓库:<https://gitee.com/dromara/easy ... gt%3B
  • Maven 依赖:<https://mvnrepository.com/arti ... gt%3B

    本次更新的核心内容是将 Easy-Es 框架底层增加兼容极限科技自主研发的 Easysearch 搜索引擎,这标志着国产搜索引擎与国内优秀开源项目深度融合的重要里程碑,是极限科技与 Dromara 社区携手共建国产技术生态的创新实践。

    02 | 迁移至 Easysearch 的背景与优势


    随着国内对自主可控技术需求的日益增长,特别是在基础设施软件领域,企业对于信创合规的要求不断提升。极限科技自主研发的 Easysearch 搜索引擎具备以下显著优势:

  • 国产化自主可控:完全自主研发,符合信创要求,无许可证风险,为企业提供安全可靠的技术保障
  • 轻量级架构:相比传统搜索引擎,资源占用更少,启动更快速,显著降低企业运维成本
  • 卓越性能表现:查询性能优异,能够满足大部分业务场景需求,用户体验流畅
  • 良好兼容性:与 Elasticsearch 的 API 接口基本兼容,迁移成本较低,保护用户现有投资

    基于以上优势,双方决定共同将 Easy-Es 框架底层迁移至 Easysearch,这不仅为用户提供更多选择,更是双方携手推动国产搜索引擎生态建设的重要举措。

    03 | Easy-Es 框架优势


    Easy-Es 框架在搜索开发领域具备以下核心优势:

    1. 极简代码开发:相比原生 API 可减少 50%-80% 的代码量,大幅提升开发效率。

      java<br /> // 使用 Easy-Es 仅需一行代码完成查询<br /> List<Document> documents = documentMapper.selectList(<br /> EsWrappers.lambdaQuery(Document.class).eq(Document::getTitle, "测试")<br /> );<br />

    2. 自动索引管理
      框架提供全自动智能索引托管功能,开发者无需关心索引的创建、更新及数据迁移等复杂操作,索引全生命周期由框架自动管理,过程零停机。

    3. SQL 语法兼容
      支持使用 MySQL 语法完成搜索查询操作,无需学习复杂的 DSL 语句。支持 and、or、like、in 等常用 SQL 语法。

    4. Lambda 表达式支持
      采用 Lambda 风格编程,提供类型安全的字段访问,避免手动输入字段名可能产生的错误,提升代码可读性和开发效率。

    5. 无缝 Spring Boot 集成
      与 Spring Boot 生态深度集成,提供开箱即用的自动配置,无需复杂的手动配置,支持 Spring Boot Actuator 监控,完美融入企业级应用架构。

    6. 丰富的查询功能
      支持复杂的嵌套查询、聚合查询、范围查询、高亮显示等高级搜索功能,同时保持 API 的简洁易用,满足各种业务场景需求。

    7. 分布式架构支持
      完美适配 Easysearch 的分布式特性,支持集群模式部署,具备高可用性和横向扩展能力,满足企业级大规模数据处理需求。

    8. 成熟稳定的国产 ORM 框架
      作为 Dromara 开源社区下的顶级开源项目,Easy-Es 已在国内众多企业和项目中得到广泛应用和验证,拥有活跃的中文社区和完善的文档支持,为企业级应用提供了可靠的技术保障。

      04 | 快速上手示例


      1. 添加依赖


      根据您使用的构建工具,选择对应的配置方式:

      Maven 项目


      pom.xml 配置

      ```xml


      11
      11
      2.7.0
      UTF-8





      org.springframework.boot
      spring-boot-dependencies
      ${spring-boot.version}
      pom
      import






      org.dromara.easy-es
      easy-es-boot-starter
      2.1.0-easysearch


      org.springframework.boot
      spring-boot-starter-web






      org.springframework.boot
      spring-boot-maven-plugin
      ${spring-boot.version}



      repackage






      ```

      **Maven 启动命令**:

      ```bash
      # 运行应用
      mvn spring-boot:run

      # 编译打包
      mvn clean package
      ```

      #### Gradle 项目

      **build.gradle 配置**:

      ```gradle
      plugins {
      id 'java'
      id 'org.springframework.boot' version '2.7.0'
      id 'io.spring.dependency-management' version '1.0.11.RELEASE'
      }

      group = 'org.easysearch'
      version = '1.0-SNAPSHOT'
      sourceCompatibility = '11'

      repositories {
      mavenLocal()
      mavenCentral()
      }

      dependencies {
      implementation 'org.dromara.easy-es:easy-es-boot-starter:2.1.0-easysearch'
      implementation 'org.springframework.boot:spring-boot-starter-web'
      }
      ```

      **Gradle 启动命令**:

      ```bash
      # 运行应用
      ./gradlew bootRun

      # 编译打包
      ./gradlew clean build
      ```

      ### 2. 配置文件设置

      **application.yml**(根据实际 Easysearch 部署情况修改):

      ```yaml
      easy-es:
      enable: true
      # Easysearch 服务地址
      address: localhost:9200
      # 协议:http 或 https
      schema: https
      # Easysearch 用户名
      username: admin
      # Easysearch 密码
      password: your_password_here
      # 连接保持时间(毫秒)
      keep-alive-millis: 18000

      global-config:
      # 开启彩蛋模式(启动时显示 ASCII 艺术图案)
      i-kun-mode: true
      # 索引处理模式:smoothly 表示平滑模式(零停机更新索引)
      process-index-mode: smoothly
      # 异步处理索引时是否阻塞
      async-process-index-blocking: true
      # 是否打印 DSL 语句(开发调试时可设为 true)
      print-dsl: false
      db-config:
      # 下划线转驼峰
      map-underscore-to-camel-case: true
      # 索引前缀
      index-prefix: dev_
      # 主键类型:customize 表示自定义
      id-type: customize
      # 字段更新策略:not_empty 表示非空时才更新
      field-strategy: not_empty
      # 刷新策略:immediate 表示立即刷新
      refresh-policy: immediate
      # 开启追踪总命中数
      enable-track-total-hits: true
      ```

      ### 3. 实体类定义

      ```java
      package org.dromara.easyes.sample.entity;

      import lombok.Data;
      import lombok.experimental.Accessors;
      import org.dromara.easyes.annotation.HighLight;
      import org.dromara.easyes.annotation.IndexField;
      import org.dromara.easyes.annotation.IndexId;
      import org.dromara.easyes.annotation.IndexName;
      import org.dromara.easyes.annotation.Settings;
      import org.dromara.easyes.annotation.rely.Analyzer;
      import org.dromara.easyes.annotation.rely.FieldStrategy;
      import org.dromara.easyes.annotation.rely.FieldType;
      import org.dromara.easyes.annotation.rely.IdType;

      import java.time.LocalDateTime;

      /**
      * es 数据模型
      */
      @Data
      @Accessors(chain = true)
      @Settings(shardsNum = 3, replicasNum = 2)
      @IndexName(value = "easyes_document", keepGlobalPrefix = true)
      public class Document {
      /**
      * es 中的唯一 id
      */
      @IndexId(type = IdType.CUSTOMIZE)
      private String id;

      /**
      * 文档标题,默认为 keyword 类型,可进行精确查询
      */
      private String title;

      /**
      * 文档内容,指定为 TEXT 类型,使用 IK 分词器
      * 支持高亮显示,高亮结果映射到 highlightContent 字段
      */
      @HighLight(mappingField = "highlightContent")
      @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
      private String content;

      /**
      * 创建者,字段策略为非空时才更新
      */
      @IndexField(strategy = FieldStrategy.NOT_EMPTY)
      private String creator;

      /**
      * 创建时间
      */
      @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
      private LocalDateTime gmtCreate;

      /**
      * 高亮返回值被映射的字段
      */
      private String highlightContent;

      /**
      * 文档点赞数
      */
      private Integer starNum;

      /**
      * 地理位置经纬度坐标,例如: "40.13933715136454,116.63441990026217"
      */
      @IndexField(fieldType = FieldType.GEO_POINT)
      private String location;
      }
      ```

      ### 4. Mapper 接口

      ```java
      package org.dromara.easyes.sample.mapper;

      import org.dromara.easyes.core.kernel.BaseEsMapper;
      import org.dromara.easyes.sample.entity.Document;

      /**
      * Mapper 接口,继承 BaseEsMapper 即可获得所有 CRUD 方法
      */
      public interface DocumentMapper extends BaseEsMapper {
      }
      ```

      ### 5. 启动类配置

      ```java
      package org.dromara.easyes.sample;

      import org.dromara.easyes.spring.annotation.EsMapperScan;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;

      /**
      * 启动类
      */
      @SpringBootApplication
      @EsMapperScan("org.dromara.easyes.sample.mapper")
      public class EasyEsApplication {
      public static void main(String[] args) {
      SpringApplication.run(EasyEsApplication.class, args);
      }
      }
      ```

      ### 6. 业务使用示例

      ```java
      package org.dromara.easyes.sample.controller;

      import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
      import org.dromara.easyes.sample.entity.Document;
      import org.dromara.easyes.sample.mapper.DocumentMapper;
      import org.easysearch.action.search.SearchResponse;
      import org.easysearch.search.aggregations.Aggregations;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.bind.annotation.RestController;

      import javax.annotation.Resource;
      import java.time.LocalDateTime;
      import java.util.List;

      @RestController
      public class SampleController {

      @Resource
      private DocumentMapper documentMapper;

      /**
      * 初始化插入数据
      */
      @GetMapping("/insert")
      public Integer insert() {
      int count = 0;
      // 插入 5 条测试数据
      for (int i = 1; i <= 5; i++) {
      Document document = new Document();
      document.setId(String.valueOf(i));
      document.setTitle("测试" + i);
      document.setContent("测试内容" + i);
      document.setCreator("创建者" + i);
      document.setGmtCreate(LocalDateTime.now());
      document.setStarNum(i * 10);
      count += documentMapper.insert(document);
      }
      return count;
      }

      /**
      * 根据标题精确查询
      */
      @GetMapping("/listDocumentByTitle")
      public List listDocumentByTitle(@RequestParam String title) {
      LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>();
      wrapper.eq(Document::getTitle, title);
      return documentMapper.selectList(wrapper);
      }

      /**
      * 高亮搜索
      */
      @GetMapping("/highlightSearch")
      public List highlightSearch(@RequestParam String content) {
      LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>();
      wrapper.match(Document::getContent, content);
      return documentMapper.selectList(wrapper);
      }

      /**
      * 查询所有数据
      */
      @GetMapping("/selectAll")
      public List selectAll() {
      LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>();
      return documentMapper.selectList(wrapper);
      }

      /**
      * 聚合查询 - 按创建时间和点赞数分组统计
      */
      @GetMapping("/aggByDateAndStar")
      public Aggregations aggByDateAndStar() {
      LambdaEsQueryWrapper wrapper = new LambdaEsQueryWrapper<>();
      wrapper.groupBy(Document::getGmtCreate)
      .max(Document::getStarNum)
      .min(Document::getStarNum);
      SearchResponse response = documentMapper.search(wrapper);
      return response.getAggregations();
      }

      /**
      * 使用 SQL 语句查询文档
      */
      @GetMapping("/queryBySQL")
      public String queryBySQL(@RequestParam(required = false) String title) {
      String sql;
      if (title != null && !title.isEmpty()) {
      sql = String.format("SELECT * FROM dev_easyes_document WHERE title = '%s'", title);
      } else {
      sql = "SELECT * FROM dev_easyes_document LIMIT 10";
      }
      return documentMapper.executeSQL(sql);
      }
      }
      ```

      ### 7. 快速测试

      启动应用后,可以通过以下接口测试:

      ```bash
      # 1. 插入测试数据
      curl http://localhost:8080/insert

      # 2. 查询所有数据
      curl http://localhost:8080/selectAll

      # 3. 根据标题精确查询
      curl "http://localhost:8080/listDocumentByTitle?title=测试1"

      # 4. 高亮搜索
      curl "http://localhost:8080/highlightSearch?content=测试"

      # 5. SQL 查询
      curl "http://localhost:8080/queryBySQL?title=测试1"

      # 6. 聚合查询
      curl http://localhost:8080/aggByDateAndStar
      ```

      ## 05 | 相关链接

  • Easy-Es 官方网站:<https://easy-es.cn>;
  • Gitee 仓库:<https://gitee.com/dromara/easy-es>;
  • GitHub 仓库:<https://github.com/dromara/easy-es>;
  • Easysearch 官方网站:<https://infinilabs.cn/products/easysearch>;

    06 | 特别致谢


    在此,极限科技要特别感谢 Easy-Es 项目的核心开发者“老汉”和各位贡献者和维护者们。正是因为有了你们的辛勤付出、专业精神以及对开源事业的热忱奉献,Easy-Es 项目才能在国内外获得如此广泛的认可和应用。

    也感谢你们对国产技术生态建设的信任与支持。此次 Easy-Es 与 Easysearch 的深度整合,正是双方通力合作、互利共赢的最佳体现。

    我们相信,在 Easy-Es 项目团队的持续推动下,国产开源软件必将迎来更加辉煌的明天。极限科技将继续致力于提供优质的国产技术解决方案,与 Easy-Es 项目团队携手共进,为中国开源生态的发展贡献更多力量!


    ---

    关于 Easy-Es


    Easy-Es(简称 EE)是一款基于 Elasticsearch(简称 ES)官方提供的 ElasticsearchClient 打造的 ORM 开发框架,在 ElasticsearchClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过 Mybatis-Plus(简称 MP),那么您基本可以零学习成本直接上手 EE,EE 是 MP 的 ES 平替版,在有些方面甚至比 MP 更简单,同时也融入了更多 ES 独有的功能,助力您快速实现各种场景的开发。

    官网:<https://www.easy-es.cn>;

    Easy-Es for Easysearch 是一款简化 Easysearch 国产化搜索引擎操作的开源框架,全自动智能索引托管。同时也是国内首家专门针对 Easysearch 客户端简化的工具。它简化 CRUD 及其它高阶操作,可以更好的帮助开发者减轻开发负担。底层采用 Easysearch Java Client,保证其原生性能及拓展性。

    项目地址:<https://gitee.com/dromara/easy ... gt%3B

    关于极限科技


    极限科技(全称:极限数据(北京)科技有限公司)是一家专注于实时搜索与数据分析的软件公司。

    旗下品牌:极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验,为用户提供安全、稳定、高性能的国产搜索解决方案。

    官网:<https://infinilabs.cn>;

    作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

【搜索客社区日报】第2163期 (2025-12-16)

社区日报God_lockin 发表了文章 • 0 个评论 • 2637 次浏览 • 6 天前 • 来自相关话题

1. ES和他的朋友们是怎么做向量召回的?(需要梯子)
https://medium.com/%40sekyouri ... 1aca6

2. VeloDB是ES的下一个挑战者吗?(需要梯子)
https://medium.com/%40VeloDB_p ... d7567

3. 构建高性能检索系统,我们做对了什么?(需要梯子)
https://itnext.io/golang-optim ... d90de
编辑:斯蒂文
更多资讯:http://news.searchkit.cn

【搜索客社区日报】第2164期 (2025-12-17)

社区日报kin122 发表了文章 • 0 个评论 • 2034 次浏览 • 5 天前 • 来自相关话题

1. 短语检索不等于BM25+向量检索| Milvus Phrase Match实战
https://mp.weixin.qq.com/s/yQyLMIF2nigRhhBuORCQ7w

2. 打破 IK 分词“架构陷阱”——阿里云 ES Serverless 索引级词典的完美热更新实践
https://mp.weixin.qq.com/s/TykXYrt76QGbsDPrD5xTkg

3. Elasticsearch:在分析过程中对数字进行标准化
https://elasticstack.blog.csdn ... 01945

编辑:kin122 
更多资讯:http://news.searchkit.cn

【搜索客社区日报】第2165期 (2025-12-18)

社区日报Se7en 发表了文章 • 0 个评论 • 1569 次浏览 • 3 天前 • 来自相关话题

1. Mini-SGLang:一窥高效推理引擎的核心精髓
https://lmsys.org/blog/2025-12-17-minisgl/
2.Encoder Disaggregation:让多模态推理服务的尾延迟更稳
https://mp.weixin.qq.com/s/96ErFSwmAezrfYcVRulA4g
3.Kubernetes 智能 Agent 运行时
https://mckinsey.github.io/agents-at-scale-ark/

编辑:Se7en
更多资讯:http://news.searchkit.cn

🔥 程序员爆哭!我们让 COCO AI 接管 GitLab 审查后,团队直接起飞:连 CTO 都说“这玩意儿比人靠谱多了”

AI 搜索NeoNeo 发表了文章 • 0 个评论 • 1256 次浏览 • 3 天前 • 来自相关话题

!(https://infinilabs.cn/img/blog ... /1.png)

我直接讲结论:

**把 COCO AI 接入 GitLab 做自动代码审核之后,我们团队的开发效率被硬生生抬了一个时代。**

没夸张。不是优化 10% 或 20%。是 ——

> **开发效率 x3**
> **Bug 暴露率 x4**
> **Review 时间 ÷10**

更夸张的是,连我们 CTO 都说:
**“这玩意儿比人审得狠,也比人稳定。”**

程序员则在角落瑟瑟发抖:
**“以前写代码是骗过人,现在要骗过神。”**

今天我就把整个故事公开,让你看看真正的 AI 审查是什么狠劲。

## 01 |为什么你们团队的代码审查永远做不好?因为你们还在靠人。

你们团队是不是这样?

- 开发提个 MR,等两天没人看
- Reviewer 随便扫一眼就点 Approve
- 线上事故后互相甩锅
- 业务压得 reviewer 根本没空认真审
- 新人写代码没人看,雷悄悄埋进去
- 老工程师被拉满,耗死在重复劳动里

别骗自己了,这不是“流程问题”。
这是 **时代问题**。

靠人审代码?
那是 2018 年的玩法。

现在是 **AI 审代码** 的时代。
谁先用,谁就是下一代团队。

## 02 | COCO AI 接入 GitLab 后,第一天就把我们吓了一跳

!(https://infinilabs.cn/img/blog ... /2.png)

MR 刚发起,COCO AI 立刻跳出来:

**“代码已接收,正在审查……”**

几十秒后——

**啪!三十条问题丢你脸上。**

而且不是小问题,都是致命的:

- 并发 map 读写直接 panic
- goroutine 不关,泄漏到天荒地老
- defer 在循环里疯狂堆
- SQL 拼接漏洞肉眼可见
- ctx 没传,超时失控
- 错误没处理,线上一炸就是大事故
- 魔法数字到处飞,迟早坑死同事

我们团队瞬间安静了。
程序员盯着屏幕:**“这谁写的?哦是我自己。”**

## 03 | COCO AI 到底有多狠?它审代码完全不给人留面子。

你在代码里犯过的错,它全看得见。

它的风格就是四个字:**不留活口**。

它会直接给你分析:

### ⚠ 逻辑错误?直接点名。

> 第 87 行你 return true 可能放大权限,严重安全风险。

### ⚠ 并发不安全?当场抓包。

> 这里的 map 没加锁,线上必崩,别侥幸了。

### ⚠ 性能差?它骂你。

> strings.Split 一秒钟几十次,你不怕 CPU 烧?
> 建议换 Cut 或者预编译正则。

### ⚠ 可读性差?它批你。

> 你这函数 160 行,是准备写回忆录?

### ⚠ 测试没写?它戳破你。

> 缺反例测试,别装了,我知道你赶进度。

它不拍马屁,不做样子,不搞关系,不吹彩虹屁,
**它只针对代码,不针对人。**
**它只认问题,不认面子。**

这就是 AI 审查的力量。

## 04 |更离谱的是:接 GitLab 只要 30 行代码

这玩意儿接入 GitLab 简直轻到离谱。

流程就是三步:

1. GitLab MR → Webhook → 你的服务
2. 把 Diff 丢给 COCO AI
3. 把审查结果评论回 MR

Go 代码甚至可以一屏写完:

```go
func handleMR(w http.ResponseWriter, r *http.Request) {
req := parseWebhook(r)
diff := gitlab.GetDiff(req)
review := coco.ReviewCode(diff)
gitlab.PostComment(req, review.Content)
}
```

连新手工程师看了都说:
**“这接入成本也太爽了吧?”**

## 05 |我给你看真实的团队指标,绝不是嘴上吹

!(https://infinilabs.cn/img/blog ... /3.png)

三个月统计(真实数据):

| 指标 | 接入前 | 接入后 |
| ---------------- | --------- | --------------------------- |
| 平均 MR 审查时间 | 1–2 天 | **5–20 分钟** |
| Reviewer 工作量 | 爆满 | **骤降 70%** |
| 严重 Bug 暴露率 | 20% 左右 | **80% ** |
| 线上事故 | 7 次/季度 | **2 次/季度**(还都小事故) |
| 新人代码质量 | 不敢看 | **像有老司机在手把手教** |

更爽的是:
**COCO AI 还把老工程师解放出来做更重要的事情。**

这才是 AI 的正确使用方式。

## 06 |你以为 AI 是玩具?错。它是未来的生产力。

这不是一个“用不用”的问题。
这是一个“想不想被时代淘汰”的问题。

未来三年,软件团队会被两种力量碾压:

- **用 AI 的团队**
- **被用 AI 的团队压死的团队**

选择权不在你手里,趋势已经发生。

## 07 |更狠的还在后面:COCO 正在做这些

我们内部已在测试:

- GitHub PR 自动审查
- IDE 实时调试 实时审查
- 全仓扫描的“技术体检报告”
- 自动生成修复 patch
- AI 识别架构风险、循环依赖、隐藏 bug 链
- 一键优化整个模块

一句话:

**COCO AI 会把你团队的代码质量拉到一个你无法想象的高度。**

## 结语:如果你团队现在还靠人审代码,那你们已经落后了。

别再幻想靠人力提升研发效率。
别再指望审查不出事故。
别再让高级工程师死在重复劳动里。

把代码审查交给 AI,
把工程师从地狱里解放出来。

如果你想让团队变强、变快、变稳,
那你需要的,不是更多人,
而是 **COCO AI 做你的 GitLab Reviewer。**

## 关于 COCO AI

COCO AI 是一款完全开源、跨平台的企业级智能搜索与助手系统,专为现代企业打造。它通过统一搜索入口,连接企业内外部的异构数据源,融合大模型能力,帮助团队高效访问知识,智能决策协作。

官网:<https://coco.rs&gt;
Github:<https://github.com/infinilabs/coco-app&gt;

【搜索客社区日报】第2166期 (2025-12-19)

社区日报Fred2000 发表了文章 • 0 个评论 • 1248 次浏览 • 3 天前 • 来自相关话题

1、Easysearch 2.0.0 性能测试
https://my.oschina.net/infinilabs/blog/18902610

2、Easy-Es 2.1.0-easysearch 版本发布
https://infinilabs.cn/blog/202 ... ease/

3、图解 Elasticsearch 慢查询诊断流程
https://mp.weixin.qq.com/s/aysQlr3OyK50GI2JlKJ1cQ

4、程序员爆哭!我们让 COCO AI 接管 GitLab 审查后,团队直接起飞:连 CTO 都说“这玩意儿比人靠谱多了”
https://my.oschina.net/infinilabs/blog/18966328

5、APM(一): Skywalking 与 Easyearch 集成
https://infinilabs.cn/blog/202 ... arch/

编辑:Fred
更多资讯:http://news.searchkit.cn

INFINI Labs 产品更新 | Coco AI v0.10 × Easysearch v2.0 联袂上线:UI 全面重构,体验焕然一新

资讯动态INFINI Labs 小助手 发表了文章 • 0 个评论 • 817 次浏览 • 1 天前 • 来自相关话题


![release](https://infinilabs.cn/img/blog/release/banner.png)

此次更新主要包括 Coco AI v0.10.0 更换全新的 UI 组件,服务端新增 milvus 和 dropbox 连接器;Easysearch v2.0.2 正式发布, 新增嵌入文档语义搜索,优化内置 UI 响应速度,无需依赖 Kibana,实现集群“开箱即管”;INFINI Console、Gateway、Agent、Loadgen v1.30.1.1 统一基于 [Framework v1.4.0](https://docs.infinilabs.com/framework/v1.4.0) 升级,优化本地磁盘队列数据消费。详情见 Release Notes。

Coco AI 0.10


Coco AI 是一款完全开源、跨平台的企业级智能搜索与助手系统,专为现代企业打造。它通过统一搜索入口,连接企业内外部的异构数据源,融合大模型能力,帮助团队高效访问知识,智能决策协作。

Coco AI 本次详细更新记录如下:

Coco AI 客户端 0.10


🚀 功能特性 (Features)


  • 扩展程序 UI 支持可调整窗口大小
    ![](https://infinilabs.cn/img/blog ... /1.png)
  • 添加打开按钮以启动已安装的扩展程序
    ![](https://infinilabs.cn/img/blog ... /2.png)

    ✈️ 改进优化 (Improvements)


  • 将应用程序和文件搜索视为普通扩展
  • 通过深度链接安装扩展失败时,显示错误消息(而非错误代码)
  • 用 shadcn/ui 组件替换旧组件
    ![](https://infinilabs.cn/img/blog ... /3.png)
    ![](https://infinilabs.cn/img/blog ... /4.png)

    🐛 问题修复(Bug Fixes)


  • 修复输入框高度异常问题
  • 为 Extension.minimum_coco_version 实现自定义序列化

    Coco AI 服务端 0.10


    🚀 功能特性 (Features)


  • 新增 milvus 连接器
    ![](https://infinilabs.cn/img/blog ... /5.png)
  • 新增 dropbox 连接器
    ![](https://infinilabs.cn/img/blog ... /6.png)

    🐛 问题修复(Bug Fixes)


  • 修复搜索 API 中图标绝对 URL 的解析问题
  • 修复集成商店读取剪贴板数据后的显示问题

    ✈️ 改进优化 (Improvements)


  • 移除分页并在全屏模式下添加无限滚动

    Easysearch v2.0.2


    INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

    Easysearch 本次更新如下:

    💥 重大变更(Breaking Changes)


  • 正式发布 Easysearch 2.0.2 版本,底层 Lucene 更新到 9.12.2
  • 新增 ui 插件,为 Easysearch 提供了轻量级界面化管理功能,不再依赖第三方对集群进行管理,真正做到开箱即用

    🚀 功能特性 (Features)


  • 语义搜索新增支持 NestedQueryBuilder
  • KNN mapping 的 L 和 k 参数支持大小写不敏感,提升易用性

    ✈️ 改进优化 (Improvements)


  • UI 插件静态文件支持 gzip 压缩,加快页面加载
  • 优化了图标资源大小
  • 调整了内部构建流程和 CSP 策略

    🐛 问题修复(Bug Fixes)


  • 修复了开发者工具的主题颜色显示问题

    Console v1.30.1


    INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。

    Console 本次详细更新记录如下:

    🚀 功能特性 (Features)


  • 支持 Easysearch 2.x 和 Opensearch 3.x

    ✈️ 改进优化 (Improvements)


  • 此版本包含了底层 [Framework v1.4.0](https://docs.infinilabs.com/framework/v1.4.0) 的更新,解决了一些常见问题,并增强了整体稳定性和性能。虽然 Console 本身没有直接的变更,但从 Framework 中继承的改进间接地使 Console 受益。

    Gateway v1.30.1


    INFINI Gateway 是一个开源的面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway 可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。

    Gateway 本次更新如下:

    ✈️ 改进优化 (Improvements)


  • 此版本包含了底层 [Framework v1.4.0](https://docs.infinilabs.com/framework/v1.4.0) 的更新,解决了一些常见问题,并增强了整体稳定性和性能。虽然 Gateway 本身没有直接的变更,但从 Framework 中继承的改进间接地使 Gateway 受益。

    Agent v1.30.1


    INFINI Agent 负责采集和上传 Elasticsearch, Easysearch, Opensearch 集群的日志和指标信息,通过 INFINI Console 管理,支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。

    Agent 本次更新如下:

    🚀 功能特性 (Features)


  • 在 Kubernetes 环境下通过环境变量 http.port 探测 Easysearch 的 HTTP 端口

    ✈️ 改进优化 (Improvements)


  • 此版本包含了底层 [Framework v1.4.0](https://docs.infinilabs.com/framework/v1.4.0) 的更新,解决了一些常见问题,并增强了整体稳定性和性能。虽然 Agent 本身没有直接的变更,但从 Framework 中继承的改进间接地使 Agent 受益。

    Loadgen v1.30.1


    INFINI Loadgen 是一款开源的专为 Easysearch、Elasticsearch、OpenSearch 设计的轻量级性能测试工具。

    Loadgen 本次更新如下:

    ✈️ 改进优化 (Improvements)


  • 此版本包含了底层 [Framework v1.4.0](https://docs.infinilabs.com/framework/v1.4.0) 的更新,解决了一些常见问题,并增强了整体稳定性和性能。虽然 Loadgen 本身没有直接的变更,但从 Framework 中继承的改进间接地使 Loadgen 受益。

    Framework 1.4.0


    INFINI Framework 是 INFINI Labs 基于 Golang 的产品的核心基础,已开源。该框架以开发者为中心设计,简化了构建高性能、可扩展且可靠的应用程序的过程。

    Framework 本次更新如下:

    🚀 功能特性 (Features)


  • 为 curl 添加 p12 证书支持(#239)
  • 从 util 中移除 curl(#242)
  • 优先使用集群名称(#243)
  • 为 access_token 添加标签(#244)
  • 为用户主体(principal)添加头像配置(#246)

    🐛 问题修复 (Bug Fixes)


  • 修复重复写入和未写入的问题(#234)
  • 当 filePath 为绝对路径时,检查其是否存在(#241)

    ✈️ 改进 (Improvements)


  • 改进 TryGetFileAbsPath() 的 panic 错误信息(#240)

    更多详情请查看以下各产品的 Release Notes 或联系我们的技术支持团队!

  • [Coco AI App](https://docs.infinilabs.com/co ... notes/)
  • [Coco AI Server](https://docs.infinilabs.com/co ... notes/)
  • [INFINI Easysearch](https://docs.infinilabs.com/ea ... earch/)
  • [INFINI Gateway](https://docs.infinilabs.com/ga ... notes/)
  • [INFINI Console](https://docs.infinilabs.com/co ... notes/)
  • [INFINI Agent](https://docs.infinilabs.com/ag ... notes/)
  • [INFINI Loadgen](https://docs.infinilabs.com/lo ... notes/)
  • [INFINI Framework](https://docs.infinilabs.com/fr ... notes/)

    期待反馈


    欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(<https://github.com/infinilabs>;) 中的对应项目中提交 Feature Request 或提交 Bug。

    下载地址: <https://infinilabs.cn/download>;

    邮件hello@infini.ltd

    电话(+86) 400-139-9200

    Discord:<https://discord.gg/4tKTMkkvVX>;

    也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

    ![](https://infinilabs.cn/img/blog ... us.png)

    关于极限科技(INFINI Labs)


    ![INFINI Labs](https://infinilabs.cn/img/blog ... bs.png)

    极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

    极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

    官网:<https://infinilabs.cn>;

【搜索客社区日报】第2167期 (2025-12-22)

社区日报Muses 发表了文章 • 0 个评论 • 219 次浏览 • 4 小时前 • 来自相关话题

1、通过 Elasticsearch 中的 function score query 按利润和受欢迎程度提升电商搜索效果
https://elasticstack.blog.csdn ... 44357

2、使用 LocalAI 和 Elasticsearch 构建本地 RAG 个人知识助手
https://elasticstack.blog.csdn ... 65475

3、使用 Node.js Elasticsearch 客户端索引大型 CSV 文件
https://elasticstack.blog.csdn ... 08761

4、Elasticsearch:构建一个 AI 驱动的电子邮件钓鱼检测
https://elasticstack.blog.csdn ... 92232

5、Kibana:使用 ES|QL 构建地图,对国家或地区的指标进行对比
https://elasticstack.blog.csdn ... 11567

编辑:Muse
更多资讯:http://news.searchkit.cn