Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Elasticsearch StudioNew to Visual Studio Code? Get it now.
Elasticsearch Studio

Elasticsearch Studio

lupee

|
1 install
| (0) | Free
Elasticsearch / OpenSearch 数据源浏览、EDQL 查询语言(复刻 JetBrains 插件 Elasticsearch Query - EDQL)、命令窗口、数据查看与编辑、导入导出
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Elasticsearch Studio

在 VS Code 里连 Elasticsearch / OpenSearch:侧边栏浏览集群(索引、字段、别名、数据流、模板、管道、快照、节点、任务),在命令窗口或 .edql 文件里用 EDQL 写请求和脚本,结果看 JSON、表格、图表,查看和修改文档,导入导出、复制索引。

EDQL 的语法和功能复刻 JetBrains 插件 Elasticsearch Query - EDQL(详细的对照见源码仓库里的 docs/功能规格.md),界面沿用 PostgreSQL Studio 的风格。

侧边栏顶部两个页签:

页签 做什么
数据源 添加 / 编辑 / 测试集群连接;按需展开 命令窗口 / 索引 / 别名 / 数据流 / 模板 / 摄取管道 / 快照仓库 / 节点 / 任务,索引下面是映射里的字段;查看数据、集群概览、构建语句、索引维护、导入、复制
历史 命令窗口、.edql 文件里执行过的请求(最多 500 条),点一条在命令窗口里打开,可以复制成 curl

所有配置保存在 ~/.x1/es-studio/conf.yaml(见「配置文件」)。

数据源

添加 / 编辑数据源

「添加数据源」弹窗填写:

  • 地址:集群的 HTTP 地址,可以带路径前缀(经网关转发时);勾选「这是 Kibana 地址」时请求经 Kibana 的 /api/console/proxy 转发(跟 Dev Tools 一样,OpenSearch Dashboards 也行);
  • 认证:无、用户名 / 密码(Basic)、API Key(填编码好的值或 id:api_key)、Authorization(原样作为请求头)、Bearer Token、Cookie、AWS 签名(SigV4,服务 es 或 aoss;可以填密钥,也可以用系统默认凭证:环境变量或 ~/.aws/credentials 的 profile);
  • 连接:CA 证书文件、是否校验 HTTPS 证书(自签证书可以关掉)、超时(秒)、只读、额外的请求头;
  • 代理 / SSH 隧道:HTTP 代理(http://user:pass@host:port),或者经 SSH 跳板机转发(密码、私钥文件、ssh-agent;跳板机可以写 ~/.ssh/config 里的 Host 名);
  • 索引过滤:数据源树里排除 / 只显示哪些索引(正则)。

「测试连接」报出集群名和版本。名称留空时取地址。

只读的数据源在命令窗口、文件、数据页、表格编辑里只放行查询:GET、HEAD 以及 _search、_count、_msearch、_mget、_sql、_query、_analyze、_validate/query、_explain、_field_caps 这些只读接口。

数据源树

树的每一层都是展开时才查询。数据源 → 十组:

分组 内容 操作
命令窗口 这个数据源保存的命令窗口(SQL 窗口标着 SQL) 双击打开;重命名、删除;新建 EDQL 命令窗口 / SQL 窗口
收藏的函数 命令窗口、.edql 文件里收藏的函数 双击(或行尾 ▶)问参数后执行;打开所在位置;取消收藏
索引 名称、文档数、占用空间;图标颜色是健康(绿 / 黄 / 红,关闭的灰色);名称后面是它的别名 见下表
别名 别名 → 指向的索引 查看数据、在命令窗口中查询、滚动(_rollover)、删除别名
数据流 后备索引个数、健康 查看数据、查看定义、删除
模板 索引模板、组件模板、旧版模板 查看定义、在命令窗口中编辑(生成 PUT 请求)、删除
摄取管道 处理器个数、说明 查看定义、在命令窗口中编辑、删除
快照仓库 展开是快照(状态、索引数、时间) 创建快照、查看详情、恢复(生成请求)、删除快照
节点 IP、角色、堆 / CPU / 磁盘占用,主节点黄色图标 查看统计、热点线程
任务 正在执行的任务(动作、已运行时间) 取消任务

索引的右键菜单:

  • 查看数据(双击也是)、在命令窗口中查询;
  • 查看映射 / 设置,「查看更多」里有统计、段、分片、恢复、磁盘占用、字段使用统计、生命周期、健康;
  • 构建语句:查询、聚合、计数、新增 / 更新 / 删除文档、批量写入、按查询更新 / 删除、重建索引、添加字段、修改设置——按映射挑字段生成一段请求,追加到这个数据源的命令窗口末尾并选中;
  • 复制名称、添加别名;导入数据(CSV / TSV / JSON / NDJSON)、复制到其他数据源(映射、设置、数据)、克隆索引;
  • 索引维护:刷新、刷盘、清除缓存、强制合并;打开 / 关闭索引;
  • 清空数据(_delete_by_query 全部文档)、删除索引:都要输入索引名确认。

字段:object、nested、多字段可以展开;图标按类型着色(keyword 蓝、text 紫、数字橙、日期黄)。右键:复制完整路径、按此字段查询、字段统计(数值 extended_stats、keyword terms、text significant_text、日期按天分桶,生成到命令窗口)。

数据源的右键菜单:打开 / 新建命令窗口、新建 .edql / .esql 文件、建立 / 断开连接、编辑、复制、测试连接、删除(只删本地保存的连接信息)、集群概览、集群信息(健康、统计、设置、分片、未分配分片原因、任务、插件、当前用户)、新建索引、上移 / 下移。

工具栏:搜索框(筛选已加载的节点)、全部刷新、全部折叠、精简折叠(只收起索引和字段),「更多」里是配置文件、显示系统索引(. 开头)、日志。

连接状态

仿 DBeaver:对数据源发成功过请求就算已连接,图标右下角带绿点。「断开连接」停止它正在执行的请求、关掉 SSH 隧道、丢掉元数据缓存,树上收起。

EDQL

语法速查

# 连接(可选,写在开头):不写就用命令窗口 / 文件绑定的数据源,写了覆盖它
HOST http://127.0.0.1:9200
Username "elastic"
Password "changeme"
Timeout 5000

# 请求:跟 Kibana Dev Tools 一样
GET _cat/indices?v&s=index

POST my-index/_search
{
  "query": { "match": { "title": "hello" } },
  "size": 10,          # 允许尾逗号和 # 注释
}

# 变量:路径里用 $名字,JSON、参数里直接写名字
var index = "my-index"
var size = 10 * 2
POST $index/_search
{ "size": size }

# 请求的响应赋给变量,用点号或 jq(JsonPath)取值
var health = GET _cluster/health
println(health.status)
var keys = jq(health, "$.status")

# 函数:按参数个数重载,不带引号的键取同名变量的值
function term2(field, value) {
  return { "term": { field: value } }
}
function search(index, q = "*") {
  POST $index/_search
  { "query": { "query_string": { "query": q } } }
}
search("logs")

# 循环、条件、map
for (i in ["a", "b"]) {
  GET $i/_count
}
var ids = [1, 2, 3].map{ it -> { return it * 10 } }
if (length(ids) > 2) { println("many") } else { println("few") }

# 多个请求体拼成 NDJSON
POST _bulk
{"index": {"_index": "a", "_id": "1"}}
{"title": "x"}

# 三引号字符串(painless 脚本)
POST my-index/_update_by_query
{ "script": { "source": """ctx._source.n += 1""" } }

# 画图:带 $schema 的对象用 Vega-Lite 画
var data = POST logs/_search
{ "size": 0, "aggs": { "d": { "date_histogram": { "field": "@timestamp", "calendar_interval": "1d" } } } }
plotline(data, "aggregations.d.buckets", "key", "doc_count")

要点(跟 EDQL 一致):

  • 方法只认大写:GET POST PUT DELETE HEAD(另外认 PATCH);路径可以省略开头的 /,里面的中文、空格自动编码;方法后面紧跟的 { } / [ ](可以换行)是请求体,多个时拼成 NDJSON(_bulk / _msearch 只给一个数组时每项一行),GET / DELETE / HEAD 只取第一个(_msearch 除外);POST / PUT 自动去掉空的 "query": {};
  • 文件头关键字大小写敏感:HOST KIBANA_HOST Authorization Username Password ApiKeyId ApiKeySecret ApiSessionToken AWSRegion AWSProfile Timeout(毫秒);文件头按位置先后生效,只执行一条语句时用的是它前面的文件头;
  • HOST / KIBANA_HOST 跟绑定的数据源地址相同时还是这个数据源(只读、账号、SSH 照旧);指向别的地址时连接只用文件头和地址里给的认证,数据源的账号、请求头、SSH、代理都不带过去;指到某个只读数据源的地址时同样只读;
  • return 后面换行就是不带值(跟 JS 一样);
  • 注释只有 #;+ 对数字相加、对字符串拼接、对对象合并、对数组连接;
  • 4xx / 5xx 的响应照常显示,不中断后面的语句;脚本出错(找不到变量、语法错误……)停在出错的地方,编辑器里标出位置。

比 EDQL 多的:比较和逻辑运算(== != < > <= >= && || !)、if / else、点号取值和下标(res.hits.hits[0]._source)、参数默认值、路径里的 ${名字}、三引号里可以有 "。

全局变量按需求值:只执行一条请求时,它用到的变量(包括 var x = GET …)才去求值;同名变量取引用位置之前最近的那个声明。

内置函数和标准库

函数 说明
jq(data, path) JsonPath(Jayway 语法):$.a.b、[*]、[0]、['a','b']、..、[1:3]、[?(@.x > 1)]、.length();过滤里能用 == != < <= > >=(只比同类型的值)、=~ /正则/i(整串匹配)、in nin subsetof anyof noneof size empty contains,@ 是当前元素、$ 是文档根;确定的路径返回一个值(不存在为 null),否则返回数组(中间层缺失的跳过)
print(v) / println(v) 输出:字符串原样;对象数组同时开一个表格页签;带 $schema 的对象(或它们的数组)画成图表
readJSON(path) / writeJSON(path, data) 读写 JSON 文件,相对 .edql 所在目录(命令窗口相对第一个工作区目录)
length keys values toJson parseJson now sleep 长度、键、值、写成 JSON、解析 JSON、当前毫秒时间戳、等待(可以被停止打断)

标准库自动导入,函数名和参数跟 EDQL 自带的库一样:

  • 集群:clusterInfo() clusterHealth() clusterStats() clusterSettings() nodeStats() indexStats() currentStats() analyze(analyzer, text);
  • 查询片段:term terms exists gt gte lt lte range wildcard match match_bool_prefix match_phrase match_phrase_prefix multi_match query_string nested order;
  • 聚合片段:termsAggs(f) termsAggs(f, size) termAggs termsAgg cardinality sum max avg min dhs(field, interval[, tz]) mfn;
  • 图表(Vega-Lite):vschema yvschema encoding encodingWithData lineencoding barencoding areaencoding textencoding textlayer ruleencoding plotline plotbar plotarea plotmetric plotpercentiles concatlayers vegaop mark filter aggrField。

脚本里定义同名同参数个数的函数会覆盖标准库的。import "lib.edql" 导入别的文件里的函数和变量(相对路径、绝对路径、file://、http(s):// 都行)。

命令窗口

数据源右键「打开命令窗口」(或行尾按钮),在编辑区打开,标签名是 数据源 · 名字。每个数据源可以有多个命令窗口(「新建命令窗口」),内容每隔几秒写回 conf.yaml,下次打开原样恢复。还可以新建 SQL 窗口:写 Elasticsearch SQL(OpenSearch 自动换成 _plugins/_sql),SELECT 没写 LIMIT 时补上(设置 esStudio.sql.defaultLimit)。

编辑器:

  • 高亮(方法分色、路径、$变量、函数调用、键名)、彩色括号、括号匹配、自动补括号引号、折叠、查找替换、多光标;
  • 行号旁的 ▶:执行那一条顶层语句(请求、函数调用、for、if);
  • 联想:方法后面是接口路径(内置 ES 接口目录),{index} 处是集群里的索引、别名、数据流,? 后面是常用参数;请求体里按 JSON 位置给 DSL 键(query、bool、must、aggs、terms……),键是字段名的地方(match、term、range、sort……)和 "field": 后面给映射里的字段;"type"、"order"、"operator" 等给可选值;语句开头是关键字、方法、文件头、代码模板(search、bool、term、aggs、createIndex……,跟 EDQL 的 live templates 同名);处处给变量和函数;
  • 悬停看接口说明、函数签名、DSL 关键字说明;语法错误标红波浪线;Ctrl / ⌘+点击名字跳到定义;
  • 快捷键:Ctrl / ⌘+Enter 执行光标所在的语句(选中了执行选中的,光标不在任何语句上时执行全部),Ctrl / ⌘+Shift+Enter 执行全部,Shift+Alt+F 格式化,Ctrl / ⌘+/ 注释,Ctrl+Space 联想,Ctrl / ⌘+S 立即保存。

工具栏:执行全部、执行当前、停止、格式化、复制为 curl(光标所在的请求,变量求值后的)、语法速查(?)。

函数:直接执行、收藏

行号旁的 ▶ 也出现在函数定义上:点了一个参数一个输入框问参数(数字、true / false、"字符串"、{…}、[…] 按 JSON 理解,其余当字符串,留空为 null),然后执行这个函数(跟 EDQL 1.10 的「运行函数弹参数框」一样)。

收藏函数(EDQL 的 Favorite functions):命令窗口里把光标放在函数定义上,编辑区右键「收藏 / 取消收藏光标所在的函数」;.edql 文件里函数定义上方的 CodeLens「☆ 收藏」。收藏的函数列在数据源树「收藏的函数」里(文件里的归到文件绑定的数据源下),双击问参数后执行。

结果

结果区第一个页签是日志:每个请求一行(时间、方法 路径、耗时、状态码和小结:took、分片、命中数……),print 的内容、出错、汇总也记一行;点一行在编辑器里选中那条语句并跳到它的结果。输出页签是 print / println 打出来的文字。

后面是这次执行的结果页签:每个请求一个(函数、循环里发的也是),print 的对象数组、图表另开页签;下一次执行换成新的。一个结果有这些看法:

  • JSON:格式化、行号、折叠(右边按钮全部折叠 / 展开)、Ctrl / ⌘+F 查找;大整数不丢精度;
  • 表格:搜索命中(_index _id _score + _source 展平)、聚合桶、映射(字段、类型、分析器……)、SQL / ES|QL、_cat(?v 的文本也认)、对象数组。点选 / 拖选 / Shift 点选格子,点行号选整行、点表头选整列,Ctrl / ⌘+C 复制成制表符分隔的文本;选中多个格子时底部显示个数、和、平均、最小、最大、中位数;上面可以按文字查找、在「列」里选显示哪些列(复制、保存表格也只要这些列);
  • 图表(print 的 Vega-Lite)、原始响应、请求(求值后的方法、路径、请求体)、响应头;
  • 性能(请求体带 "profile": true 时):各分片的查询树、Collector、聚合的耗时,底色条是占比(50% 以上红、20% 以上橙),悬停看耗时分解;
  • 评分解释(请求体带 "explain": true 时):每条命中的评分计算树。

搜索结果的表格:

  • 翻页:首页 / 上一页 / 下一页、每页条数——改请求体的 from / size 重发(不能超过第 10000 条);
  • 修改:双击格子(或 Enter / F2)改值(能解析成 JSON 的按 JSON,否则是字符串),「新增」「复制行」「删除」,「提交」用 _bulk?refresh=true 写回(update / create / delete),「撤销」放弃;只读数据源不能改。

SQL 结果有 cursor 时底部有「下一页」。

右上角:复制、在编辑器中打开(完整的响应,太大时结果区只显示开头)、导出:保存响应(JSON)、保存表格(CSV / TSV),搜索结果还可以导出全部(用 scroll 取满足条件的全部文档,CSV / NDJSON / JSON,显示进度、可以取消)。

.edql / .esql 文件

在任何地方新建 .edql 文件(或数据源右键「新建 .edql 文件」,放在 ~/.x1/es-studio/scripts/<数据源>/ 下),在 VS Code 自己的编辑器里写:

  • 用哪个数据源:状态栏右下角、编辑器标题栏的数据库按钮、文件开头的 CodeLens 上选(记住每个文件的选择);文件开头写了 HOST 时以它为准;
  • 文件开头「▶ 执行全部 · 数据源」,每条可执行的顶层语句上「▶ 执行」,搜索请求上「复制 curl」,函数定义上「▶ 调用(问参数)」「☆ 收藏」;
  • Ctrl / ⌘+Enter、Ctrl / ⌘+Shift+Enter 跟命令窗口一样;结果在旁边的「结果」页(跟命令窗口的结果区一样),执行出错的位置标红;
  • 联想、悬停、语法检查、格式化(Shift+Alt+F,也可以只格式化选中的)、大纲、跳到定义(F12,重载的函数按参数个数跳)、查找引用(Shift+F12)、重命名(F2;$x 和 x 算同一个;函数参数、函数和 if / for 块里的 var 只在那一层;内置函数、请求体里不对应变量的键、关键字不能改名)。

.esql 文件写 SQL,语句用分号隔开,Ctrl / ⌘+Enter 执行光标所在的语句。

查看数据

双击索引(别名、数据流也行)打开数据页:

  • 查询:Lucene 语法(status:active AND age:[18 TO 30]),以 { 开头时是查询 DSL({"term": {"status": "active"}});排序:字段:desc, 字段2;回车或「查询」执行;条件、排序、显示的字段记在 conf.yaml 里;
  • 字段:勾选要显示的列(缺省为映射里的全部字段),点表头按这个字段排序(升序 → 降序 → 不排);可以切成 JSON 视图;
  • 双击一行在右边看这条文档的 JSON,改了「保存」覆盖(带 if_seq_no,别人先改过会报冲突;拿不到版本号时先确认);「新增」填 JSON 写入(_id 留空自动生成;填了 _id 用 _create,同 _id 已存在时报错、不覆盖);点行号选中行(Ctrl / ⌘ 点多选)后「删除」;超过 2^53 的长整数在显示、编辑、保存、导出时都保留原样;
  • 底部:总条数、耗时、翻页、每页条数、导出满足条件的全部文档(CSV / NDJSON,NDJSON 带 _routing,可以直接导回)。

集群概览

数据源右键「集群概览」:健康状态、节点数、索引数、文档数、存储、JVM 堆、活动 / 未分配分片、等待中的任务;节点表(堆、内存、CPU、负载、磁盘,超过 50% 橙、80% 红);索引表(可以筛选、排序,点名字查看数据)。默认每 5 秒刷新,可以改间隔或暂停;页面不可见时不刷新。

导入、复制

  • 导入数据(索引右键):选文件,CSV / TSV 第一行是字段名(_id、_index、_routing 列当元数据;规整的数字按数字写、保留原文(1.10 还是 1.10),true / false、JSON 对象 / 数组按类型,007、1e5、null 这类当字符串,由 ES 按映射转换);JSON 可以是对象数组、搜索响应(取 hits)或单个对象;NDJSON 一行一个对象(导出的 _index / _id / _routing / _source 格式也认),本身就是 _bulk 格式(动作行 + 文档行)的原样发。选「写入(index)」「新建(create)」或「按文件里的 _index」,每批 1000 条用 _bulk 写入,显示进度、可以取消,完了报成功 / 失败条数;
  • 复制到其他数据源(索引右键):选目标数据源和索引名,复制映射和设置(去掉 uuid、创建时间这些带不过去的)和 / 或数据(scroll 读、_bulk 写);目标已存在时可以追加或删除重建。

设置项与命令

设置(esStudio.*):

设置项 默认 说明
ui.dialogWindow float 数据源弹窗在独立窗口(float)还是编辑器标签页(tab)里打开
tree.showHiddenIndices false 数据源树里显示 . 开头的系统索引、别名、数据流、模板
data.pageSize 50 数据页每页条数
result.maxDisplayMB 10 结果区显示的响应体最大 MB,超过的截断显示
sql.defaultLimit 100 SQL 的 SELECT 没写 LIMIT 时补上的条数,0 为不补
edql.codeLens true .edql / .esql 文件里显示「▶ 执行」等 CodeLens

命令面板(分类「ES Studio」「EDQL」):添加数据源、打开命令窗口、新建 .edql / .esql 文件、请求历史、打开配置文件、重新加载配置、显示日志;在 .edql 文件里:执行当前语句、执行全部、停止、选择数据源、复制为 curl。

配置文件

~/.x1/es-studio/conf.yaml(目录 0700、文件 0600,密码、密钥为明文):

version: 1
datasources:
  - id: 3f2a9c1b7e04
    name: 本地
    url: http://127.0.0.1:9200
    auth: basic                  # none | basic | apiKey | token | bearer | cookie | aws
    username: elastic
    password: changeme
  - id: 7c1d2e3f4a5b
    name: 生产(只读)
    url: https://es.example.com:9243
    auth: apiKey
    apiKey: VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==
    readonly: true
    verifyTls: false             # 自签证书
    excludeIndices: ^\.kibana.*|^\.apm.*
  - id: 9d8e7f6a5b4c
    name: AWS
    url: https://search-xxx.us-east-1.es.amazonaws.com
    auth: aws
    awsRegion: us-east-1
    awsUseDefault: true          # 用环境变量或 ~/.aws/credentials
    awsProfile: prod
    sshHost: bastion             # 可选:经 SSH 跳板机
    sshAuth: agent
consoles:                        # 命令窗口的内容
  - datasourceId: 3f2a9c1b7e04
    name: console
    text: |
      GET _cat/indices?v
  - datasourceId: 3f2a9c1b7e04
    name: sql
    kind: sql
    text: SELECT * FROM "logs" LIMIT 10;
favorites:                       # 收藏的函数:命令窗口里的(datasourceId + console)或 .edql 文件里的(file)
  - name: search
    datasourceId: 3f2a9c1b7e04
    console: console
  - name: dailyStats
    file: /Users/me/scripts/stats.edql
    datasourceId: 3f2a9c1b7e04
indexPrefs:                      # 数据页:每个索引上次的查询条件、排序、显示字段
  - datasourceId: 3f2a9c1b7e04
    index: logs
    query: level:error
    sort: "@timestamp:desc"
    fields: [message, level, "@timestamp"]

跟缺省值一样的字段不写。可以手工编辑,保存后插件自动重新读取(等 300 毫秒没有新改动再读)。写回时先写临时文件再改名;不认识的顶层键原样保留;缺 id、url 的数据源忽略并记进日志;无法解析的文件改名为 conf.yaml.broken-<时间>,不会被覆盖。

请求历史在 ~/.x1/es-studio/history.jsonl,.edql 文件绑定的数据源记在 VS Code 的全局状态里。

限制

  • 不做 EDQL 的 AI 功能(自然语言生成 DSL、解释、翻译成代码),「复制为 curl」保留;不做拖拽式的 Visual Editor(用「查看数据」页);导入导出不支持 Excel;
  • AWS 凭证只认密钥、环境变量和 ~/.aws/credentials / config 里的 profile,不支持 SSO、assume role、实例元数据;
  • SSH 隧道认 ~/.ssh/config 里的 HostName、Port、User、IdentityFile,不支持 ProxyCommand / ProxyJump;
  • 翻页最多到第 10000 条(index.max_result_window),更多的用 search_after 或「导出全部」。

开发

npm install
npm run compile          # 开发构建(扩展 + 编辑器 + Vega 图表)
npm run watch            # 监听构建(F5 调试用)
npm run check-types      # 类型检查(扩展 + webview)
npm test                 # 构建后跑全部:基础模块、HTTP 客户端(假 ES)、EDQL 语言(词法 / 语法 / 解释器 / 联想 / 格式化)、
                         # JsonPath、符号(定义 / 引用 / 重命名)、结果处理(翻页 / 提交 / curl)、SSH 隧道、HTTPS 与代理、
                         # webview 页面、审查问题的回归、扩展激活
npm run package          # 类型检查 + 生产构建
./build.sh               # 打包 VSIX(也可以 npm run vsix)
npm run dev:link         # 把本仓库软链到 ~/.vscode/extensions,重载窗口即生效(dev:unlink / dev:status / dev:check)
python3 scripts/render-icon.py   # 改了 media/icon.svg 后重新生成 media/icon.png(仅 macOS,借用无头 Google Chrome 渲染)
ES_URL=http://127.0.0.1:9200 node .test-out/real.js   # 对着真的集群跑一遍(会建删 es_studio_test_a、edql_demo 索引;ES_REPO=目录 时测快照)

源码结构:

目录 内容
src/shared/edql/ EDQL 语言:词法、语法、解释器、JsonPath、无损 JSON、标准库、格式化、联想、符号(扩展和编辑器页面共用)
src/shared/ ES 接口目录、DSL 结构表、结果转表格
src/es/ HTTP 客户端(认证、Kibana 转发、AWS 签名、代理、SSH 隧道)、元数据、示例请求、SQL
src/edql/ 执行器(接 ES 客户端、文件、历史)、.edql / .esql 文件的语言支持
src/views/ 侧边栏、命令窗口、结果页、数据页、集群概览、表单、导入、复制
webview/ 命令窗口里的 CodeMirror 编辑器、Vega-Lite 图表(打包进 dist/webview/)
media/ 各页面的 HTML / CSS / JS
syntaxes/ .edql / .esql 的 TextMate 语法和语言配置
docs/ 功能规格(跟 EDQL 的对照)、EDQL 示例脚本 示例.edql
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft