我把 Kibana Console 的核心 DSL 能力单独剥离出来了
很多中大型公司其实并不缺平台。
真正缺的,往往是一个能顺利嵌入现有平台体系里的 Elasticsearch DSL 控制台能力。
最近我把一个自己实际会用到的工具开源了,名字叫dsl-kibana。
它做的事情很直接:
把 Kibana Console 中最常用、最有生产力的 DSL 能力单独剥离出来,做成一个更轻量、更容易二次开发、也更适合集成到企业自有研发平台、运维平台和数据平台中的项目。
项目地址:
https://github.com/xiaohongaiweno/dsl-kibana
【为什么会做这个项目】
对于很多中大型公司来说,实际情况通常是这样的:
- 已经有自己的研发平台
- 已经有自己的运维平台
- 已经有统一登录和权限体系
- 已经有内部前端框架和设计规范
这时候,如果只是为了提供一个 Elasticsearch DSL 调试能力,就去整体接入完整 Kibana,通常会遇到几个比较现实的问题:
- 开发和改造工作量不小
- 只需要 DSL 控制台能力,却要承担整套 Kibana 的接入复杂度
- 整体引入的性价比不一定高
- 还会增加权限、审计、访问控制和平台安全面的治理压力
所以我最后选择的思路不是“把 Kibana 整个搬进来”,而是“把真正有价值的 DSL 能力单独拿出来”。
dsl-kibana就是基于这个思路做出来的。
【这个项目可以做什么】
我先直接说能力,不绕弯子。
- 支持多请求块编辑与执行
在同一个编辑器里,可以连续写多段 Elasticsearch 请求。
每个请求块左侧都有独立的运行按钮,可以单独执行某一块请求。
这件事看起来简单,但在真实调试里非常高频。因为很多时候,一份文档里会保留多段常用查询模板、排障语句或者验证语句。
- 支持 Kibana 风格自动补全
项目内置了比较接近 Kibana Console 的自动补全能力,覆盖:
- HTTP 方法补全
- 接口路径补全
- URL 查询参数补全
- URL 参数值补全
- JSON Body 字段补全
这意味着它不是一个单纯的文本框,而是一个具备真实生产力的 DSL 编写工具。
- 支持 ES6 / ES7 / ES8 规则切换
很多企业内部环境并不是单一 Elasticsearch 版本。
有些系统还在旧版本,有些系统已经升级到新版本,接口路径和兼容规则会存在差异。
dsl-kibana已经支持ES6、ES7、ES8三套规则切换,这一点对实际使用很有帮助。
- 支持直接请求本地 Elasticsearch
项目默认请求:
http://localhost:9200
启动本地 Elasticsearch 后,打开页面就可以直接编写 DSL 并执行查看结果。
- 更适合二次开发和平台集成
这是这个项目最重要的价值。
它不是一个封死的工具页面,而是一个可以继续嵌入、继续扩展、继续改造的 DSL 能力模块。
你可以把它接入到:
- 企业研发平台
- 企业运维平台
- 数据平台
- 搜索团队内部工作台
而不需要把完整 Kibana 整体塞进现有系统里。
【为什么它更适合企业内部落地】
很多团队真正需要的并不是一个完整平台,而只是:
- 一个可写 DSL 的编辑器
- 一套顺手的自动补全
- 一个请求执行入口
- 一个结果展示区域
如果为了这些能力整体接入 Kibana,往往意味着更高的改造成本和更复杂的治理工作。
而dsl-kibana的价值就在于:
它把最需要的那部分能力独立出来了。
这样一来,团队就可以:
- 按自己的页面风格改造
- 按自己的权限体系接入
- 按自己的审计要求扩展
- 按自己的平台规范封装
从企业落地角度看,这样的方式通常更轻、更稳,也更划算。
【技术上为什么适合继续扩展】
这个项目在结构上也尽量做了拆分,核心模块大致包括:
src/App.vue:页面与主流程控制src/kibanaConsoleParser.js:多请求块解析src/requestExecution.js:请求执行与取消控制src/kibanaConsoleAutocomplete.js:编辑器补全适配层src/kibanaConsoleAutocompleteCore.js:补全规则核心算法
这意味着后续如果你要继续扩展,也会比较顺手,比如:
- 接公司内部认证体系
- 接内部网关或代理层
- 接审计日志
- 增加企业自定义接口
- 增加企业自定义补全规则
- 改造成内部平台组件
【一个简单示例】
项目默认请求本地 Elasticsearch:
http://localhost:9200
页面打开后,可以直接输入:
GET /_search { "query": { "match_all": {} } }然后:
- 点击请求块左侧
▶执行 - 或者按
Ctrl + Enter - 在右侧查看结果、状态码和耗时
如果一份文档里写了多段请求,也可以按块分别执行。
【适合哪些人关注这个项目】
我觉得主要适合下面几类人:
- 日常会写 Elasticsearch DSL 的工程师
如果你平时经常要调试 DSL、验证查询语句、排查索引问题,这个工具会比较顺手。
- 正在做企业内部平台建设的团队
如果你们已经有自己的研发平台、运维平台或数据平台,但又需要一个可控的 ES DSL 控制台能力,这个项目会比较有参考价值。
- 对编辑器和自动补全实现感兴趣的开发者
如果你想研究 Kibana Console 类交互、请求块解析、自动补全实现和规则匹配思路,这个项目也适合拿来学习。
【最后】
我并不觉得这个项目的价值在于“替代 Kibana”。
Kibana 依然是一个成熟、完整的平台。
而dsl-kibana更像是把 Kibana Console 中最高频、最实用的 DSL 能力单独抽出来,用更轻量的方式服务企业集成、内部工具和二次开发场景。
如果你所在的团队也有下面这些需求:
- 已经有自己的平台,但缺一个顺手的 ES DSL 控制台
- 不想为了一个查询能力整体接入 Kibana
- 想保留 Kibana Console 的核心体验
- 又希望更方便做企业内部二次开发
那这个项目也许会对你有一些帮助。
项目已经开源在 GitHub:
https://github.com/xiaohongaiweno/dsl-kibana
如果你觉得这个方向有价值,欢迎看看,也欢迎给项目点一个 Star。
如果你们团队也在做 Elasticsearch 工具平台、企业内部控制台或者搜索研发基础设施建设,欢迎交流。
如果这篇文章对你有帮助,也欢迎转发给有类似需求的朋友。