Spring Boot 线上 ES 重建索引,你还在停机、写脚本、手动切别名吗?我把它做成了一个 starter,后来长成了一个 Elasticsearch 查询与运维工作台:ESQueryStudio(原名 es-rebuild-spring-boot-starter)。

ESQueryStudio 查询工作台(真实控制台 · Demo 数据)

为什么要再做一个 ES 控制台

大部分 Elasticsearch 控制台把“查询”拆成互不相通的工具页:DSL 构建器一页、SQL 一页、Explain 一页,写完条件树还要手抄 JSON;补全只给关键字,不管字段是 text 还是 keyword,也不管分词器和集群版本;分数不对只能猜,慢查询只能翻日志。对 Spring Boot 团队还有一层麻烦:为了一个查询台,要再部署一套 Kibana,登录态、菜单、权限和审计都接不回宿主应用。

ESQueryStudio 想解决的就是这条链路:把“怎么写、怎么跑、为什么命中、为什么慢”收进一个连续的查询现场,同时让控制台可以作为 Spring Boot 应用的一部分交付。

六种模式,共用一个现场

  • DSL 构建器 + 原始编辑器:条件树和 JSON 双向同步;不认识的子句退回原文编辑。
  • ES-SQL:_sql 查询、cursor 深分页、字段体检、结果多视图,SQL 与 DSL 一键互转。
  • Lucene:保留原始高亮与命中行,可带去构建器继续改。
  • 查询沙盒:自由写 DSL、看原始响应、对比 _source 与高亮。
  • PIT 深分页:基于 Point-in-Time 的稳定翻页,游标断了能解释、能续拉。
  • SQL ⇄ DSL 语法桥:翻译时保留语义差异提示,不把“翻译成功”当成“语义等价”。

真正懂 ES 的语义层

补全和 lint 读取当前索引的实时信息:字段类型、text/keyword 子字段、nested 结构、分词器、normalizer、同义词、analysis 设置、可排序性、日期格式、字段角色、当前集群版本。条件树改完,JSON 立即更新;JSON 改完,条件树按语义重建。

相关性实验室

打分解剖、排名侦探、查询 X 光、子句命中矩阵、Boost 调参、Profile 火焰图共享同一个查询现场。不是六个互不相干的工具页。

打分解剖与相关性实验(真实控制台 · Demo 数据)

零停机重建

这是项目最初的名字:es-rebuild-spring-boot-starter。选索引 → 审 settings/mapping → 追平增量 → 预览 → 执行监控 → 别名翻转;失败可续、预览可查、过程可监控。跨集群迁移、Reindex 预估、快照/SLM/ILM 也在同一套控制台里。

MCP:三种接入面,让 AI 直接使用 ESQueryStudio

ESQueryStudio 不只是给人点的控制台,也可以作为 MCP Server 被 AI 客户端直接调用。三种接入面共用同一组工具契约:

  • 服务端模式:POST /mcp(JSON-RPC 2.0),Claude Desktop / Cursor / 任意 MCP 客户端
  • 纯前端模式:window.ESQueryStudioMCP,页面内 AI / Agent,零端口
  • 本地 Node 模式:mcp/esquerystudio-local-mcp.mjs(stdio),无 Spring Boot、无浏览器

MCP 接入管理:密钥、权限、配额与审计(真实控制台)

三种模式共用 15 个 action 型工具(覆盖 130 个细粒度操作)、9 个只读资源与 5 个引导提示词;默认只读,写工具必须由 ADMIN 显式签发 write 权限。权限按“连接 × 工具”收口:key 按登录人/角色签发,连接级 read/write(QA/UAT 可写、生产只读),工具白名单、rpm/日/月配额、轮换/撤销;明文只出现一次,存储只留 SHA-256。raw REST 也做了读写分类:GET/HEAD 只读,POST 查询 API 只读,写 API 和未知 POST/PUT/DELETE fail-closed。

给 AI 的深度用法:先 es_get_mapping/settings 再生成 DSL,执行前 lint/explain;慢查询用 es_list_tasks + es_search(profile=true) + es_explain_doc 解释;生产只读、QA 可写靠连接级权限,不靠提示词约束。

和别的产品有什么不一样

  • 不是 Kibana 套壳:嵌进 Spring Boot,登录态、路由、权限、菜单都在宿主
  • 不是一次性重建脚本:预览、追平、别名翻转、监控、可续
  • 不是只会 rebuild:六种查询模式 + 相关性实验室 + MCP
  • 一套 Vue 源码,服务端模式和 Chrome MV3 扩展浏览器模式同源;11 个功能包、页面级权限、宿主 SPI

怎么跑

独立部署:

java -jar esquerystudio-server.jar

打开 http://localhost:5601/esquerystudio.html。

嵌入 Spring Boot:加 esquerystudio-console 依赖,声明 @Document 实体;只想要重建引擎时用 mode=rebuild-only。

项目地址

  • GitHub:https://github.com/dengmeiluan/esquerystudio
  • 在线演示:https://dengmeiluan.github.io/esquerystudio/

项目使用 Apache-2.0 开源,欢迎试用、提 issue 或直接交流使用场景。

Logo

更多推荐