--- title: "查询存储脚本" date: 2026-01-03 lastmod: 2026-01-03 description: "查询指定的存储脚本" tags: ["脚本", "查询", "存储脚本"] summary: "获取集群中指定存储脚本的信息。 API 格式 # GET /_scripts/{id} API 作用 # 该 API 用于检索集群中的存储脚本: 获取指定 ID 的存储脚本 查看脚本语言和源代码 检查脚本是否存在于集群中 API 参数 # 路径参数 # 参数 类型 是否必填 默认值 描述 {id} String 是 - 要查询的存储脚本 ID 查询参数 # 参数 类型 是否必填 默认值 描述 master_timeout Time 否 默认超时 连接主节点的超时时间 请求示例 # 查询指定脚本 # GET /_scripts/calculate-score 设置主节点超时 # GET /_scripts/calculate-score?" --- 获取集群中指定存储脚本的信息。 ## API 格式 ``` GET /_scripts/{id} ``` ## API 作用 该 API 用于检索集群中的存储脚本: - 获取指定 ID 的存储脚本 - 查看脚本语言和源代码 - 检查脚本是否存在于集群中 ## API 参数 ### 路径参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `{id}` | String | **是** | - | 要查询的存储脚本 ID | ### 查询参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `master_timeout` | Time | 否 | 默认超时 | 连接主节点的超时时间 | ## 请求示例 ### 查询指定脚本 ``` GET /_scripts/calculate-score ``` ### 设置主节点超时 ``` GET /_scripts/calculate-score?master_timeout=50s ``` ## 响应示例 ### 成功响应(找到脚本) ```json { "_id": "calculate-score", "found": true, "script": { "lang": "painless", "source": "Math.log(_score * 2) + params.my_modifier", "options": { "content_type": "application/json" } } } ``` ### 未找到响应 ```json { "_id": "nonexistent-script", "found": false } ``` ## 响应字段说明 | 字段 | 类型 | 描述 | |------|------|------| | `_id` | String | 请求的脚本 ID | | `found` | Boolean | 是否找到脚本 | | `script` | Object | 脚本详情(仅在找到时存在) | | `script.lang` | String | 脚本语言(如 `painless`、`mustache`) | | `script.source` | String | 脚本源代码 | | `script.options` | Object | 编译器选项(可选) | ## HTTP 状态码 | 状态码 | 描述 | |--------|------| | 200 OK | 成功找到脚本 | | 404 Not Found | 脚本不存在 | ## 验证规则 - 脚本 ID 必须指定且不能为空 - 脚本 ID 不能包含 `#` 字符 ## 使用场景 1. **脚本验证**:确认脚本是否存在于集群中 2. **脚本查看**:查看脚本的源代码和配置 3. **版本管理**:检查脚本的当前版本 4. **依赖检查**:在使用脚本前验证其存在性 ## 注意事项 1. **脚本内容**:返回的是脚本的完整源代码 2. **选项信息**:编译选项仅在设置时返回 3. **响应格式**:未找到脚本时仍返回 200 OK,但 `found` 为 `false` ## 相关操作 - **PUT /_scripts/{id}**:创建或更新存储脚本 - **DELETE /_scripts/{id}**:删除存储脚本 - **GET /_script_context**:查询支持的脚本上下文 - **GET /_script_language**:查询支持的脚本语言 ## 实现文件 - **REST 处理器**:`RestGetStoredScriptAction.java` - **请求类**:`GetStoredScriptRequest.java` - **响应类**:`GetStoredScriptResponse.java` - **脚本源**:`StoredScriptSource.java`