为 Spring Boot 团队做一个 Elasticsearch 查询工作台:六种模式 + MCP 三接入面
目录
Spring Boot 线上 ES 重建索引,你还在停机、写脚本、手动切别名吗?我把它做成了一个 starter,后来长成了一个 Elasticsearch 查询与运维工作台:ESQueryStudio(原名 es-rebuild-spring-boot-starter)。

为什么要再做一个 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 火焰图共享同一个查询现场。不是六个互不相干的工具页。

零停机重建
这是项目最初的名字: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、无浏览器

三种模式共用 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 或直接交流使用场景。
更多推荐


所有评论(0)