弹性Schemas
所有弹性API的Schema定义,包括"弹性搜索","基巴纳"和"云". 多种形式:
- 佐德语Name 计划
- 简单的 JSON 计划
- 为基于 LLM 的代理优化的工具注册
还包括基本设施,用于建造HTTP API请求,这些请求来自与所提供的计划之一相匹配的投入.
安装
从 npm 安装 :
npm install @elastic/schemas
可选依赖关系
佐德语Name 是一种可选的依赖。 如果只需要JSON schemas或工具注册,则不需要安装Zod. 如果您想要使用Zod schemas,请明确安装:
npm install zod
使用量
JSON 计划
静态 杰森·斯克马 每个API的请求和响应都有文件。 命名空格 API 名称 {namespace}.{name}.request.json; 顶级( 全球) API 命名 {name}.request.json。 。 。 .
import searchRequest from '@elastic/schemas/es/json/search.request.json' with { type: 'json' }
import searchResponse from '@elastic/schemas/es/json/search.response.json' with { type: 'json' }
import findRulesRequest from '@elastic/schemas/kibana/json/find_rules.request.json' with { type: 'json' }
import createApiKeyRequest from '@elastic/schemas/cloud/json/create_api_key.request.json' with { type: 'json' }
计划可以直接使用任何JSON Schema验证器,例如. 亚日弗数字 :
import Ajv from 'ajv'
import searchRequest from '@elastic/schemas/es/json/search.request.json' with { type: 'json' }
const ajv = new Ajv()
const validate = ajv.compile(searchRequest)
const valid = validate({ index: 'my-index', query: { match_all: {} } })
if (!valid) console.error(validate.errors)
Zod 计划
如果您安装了 Zod, 请用其模块路径导入单个计划, 并像任何 Zod 计划一样使用 :
import { SearchRequest } from '@elastic/schemas/es/schemas/search.js'
const result = SearchRequest.safeParse({
index: 'my-index',
query: { match: { title: 'elasticsearch' } },
size: 10,
})
if (!result.success) {
console.error(result.error.issues)
}
工具登记
由 API ID 装入工具定义并构建一个随时发送的 HTTP 请求 :
import { esRegistry } from '@elastic/schemas/es/tools/index.js'
const api = await esRegistry.loadApi('search')
const request = api.buildRequest({
index: 'my-index',
query: { match: { title: 'elasticsearch' } },
size: 10,
})
// { method: 'GET', path: '/my-index/_search', body: { query: ..., size: 10 } }
每个装入 definition 携带两面分类旗. destructive 标记删除或变异的操作
现有数据. readOnly 标记只读取的操作:每一次GET和HEAW呼叫,但有副作用的操作除外,
加上搜索风格 POST 调用 count 或者说 sql.query。只读操作绝不具有破坏性。 一样
jSON Schema 请求文档中的旗帜为 x-destructive 财务报告和审定财务报表 x-read-only。 。 。 .
通过 esRegistry.manifest (数量 { id, name, namespace, description, destructive, readOnly } 条目).
工具清单
每种产品都暴露出一个清单: ApiRegistryMeta 描述每个可用的 API 对象 ({ id, name, namespace, description, namespaceFile, destructive, readOnly }) (中文(简体) ). 这个 destructive 财务报告和审定财务报表 readOnly 旗帜与已加载的定义相匹配,因此可以在不加载任何定义的情况下通过分类过滤API. 无需装入任何计划代码即可直接导入清单 :
import { kibanaManifest } from '@elastic/schemas/kibana/tools/manifest.js'
import { esManifest } from '@elastic/schemas/es/tools/manifest.js'
import { cloudManifest } from '@elastic/schemas/cloud/tools/manifest.js'
import { serverlessManifest } from '@elastic/schemas/serverless/tools/manifest.js'
这个 ApiRegistryMeta 主切入点导出类型 :
import type { ApiRegistryMeta } from '@elastic/schemas'
可用出口
: 警告: 将所有计划导入为单个对象将消耗 经常 所以,我们鼓励你使用你需要的 计划的确切路径:
import { SearchRequest } from '@elastic/schemas/es/schemas/search.js'
但是,如果您确实需要完全出口,则提供下列出口:
| 导出 | 说明 |
|---|---|
ElasticsearchSchemas | 所有ES API 的 Zod 计划 |
ElasticsearchTools | ES 工具登记册+ esRegistry |
KibanaSchemas | 所有 Kibana API 的 Zod 计划 |
KibanaTools | Kibana 工具登记册 + kibanaRegistry |
CloudSchemas | 所有云层API的 Zod 计划 |
CloudTools | 云工具登记+ cloudRegistry |
ServerlessSchemas | 用于所有无服务器 API 的 Zod 方案 |
ServerlessTools | 无服务器工具注册 + serverlessRegistry |
ApiRegistryMeta | 显示条目的共享类型 |
版本支持
本套件中的"计划"反映了Elasticsearch Serverness最新发布的"Elasticsearch"和"Kibana"的API规格,也反映了Elastic Cloud Control平面API的最新稳定发布. 对其它版本"弹性堆栈"的支持即将到来!!