@elastic/request-converter

中文文档
9.6.1发布于 2026/11/05Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 38.3万

弹性搜索请求转换器

中文使用文档
文档目录18 节
  1. 安装
  2. 使用量
  3. 可用格式
  4. 卷曲
  5. 蟒蛇
  6. 日记
  7. 密码
  8. 红宝石
  9. 摇摆
  10. 命令线接口
  11. 使用自定义导出器
  12. 发展
  13. 弹性搜索规格更新
  14. 单位测试
  15. 融合测试
  16. 线性
  17. 大楼
  18. 释放

请求转换器

用 Dev Console 语法将 Elasticsearch 请求转换成其他格式的库.

试试看 这里。 。 。 .

安装

npm install @elastic/request-converter

使用量

import { convertRequests } from "@elastic/request-converter";

const devConsoleScript = `GET /my-index-000001/_search?from=40&size=20
{
  "query": {
    "term": {
      "user.id": "kimchy"
    }
  }
}`

async function main() {
  const code = await convertRequests(devConsoleScript, "python", {
    checkOnly: false,
    printResponse: true,
    complete: true,
    elasticsearchUrl: "http://localhost:9200",
  });
  console.log(code);
}

main();

第二个参数中可以传递的现有格式列表可以是: 所得情况如下:

import { listFormats } from "@elastic/request-converter";

const formats = listFormats();

上面的例子中的自动代码会是这样的:

import os
from elasticsearch import Elasticsearch

client = Elasticsearch(
    hosts=["http://localhost:9200"],
    api_key=os.getenv("ELASTIC_API_KEY"),
)

resp = client.search(
    index="my-index-000001",
    from_="40",
    size="20",
    query={
        "term": {
            "user.id": "kimchy"
        }
    },
)

当使用节点和 JavaScript 时, 您可以导入此库中的函数为 如下:

const { convertRequests, listFormats } = require("@elastic/request-converter");

可用格式

此时转换器支持 curl, (中文(简体) ), python, (中文(简体) ), javascript, (中文(简体) ), php, (中文(简体) ), ruby 财务报告和审定财务报表 csharp。目前正在开展工作 正在取得进展,以增加对更多语言的支持.

卷曲

卷轴导出者使用 卷曲 命令行 HTTP 客户端.

支持的选项 :

选项名称类型需求说明
elasticsearchUrlstring没有在生成的命令中使用的弹性搜索端点 。 默认是 http://localhost:9200。 。 。 .
otherUrlsRecord<string, string>没有其他服务的URL. 基巴纳,使用 {kbn: "http://localhost:5601"}
windowsboolean没有若为 true,使用PowerShell 逃避规则引用。 若为 false用击打/zsh逃出规则。 默认是 false。 。 。 .

蟒蛇

Python导出器为Elasticsearch Python客户端生成代码.

支持的选项 :

选项名称类型需求说明
printResponseboolean没有若为 true,在打印响应时添加代码。 默认是 false。 。 。 .
completeboolean没有若为 true,生成完整的脚本。 若为 false,只生成请求代码。 默认是 false。 。 。 .
elasticsearchUrlstring没有要使用的弹性搜索端点 。 默认是 http://localhost:9200。 。 。 .

日记

JavaScript出口商为Elasticsearch JavaScript客户端生成代码.

支持的选项 :

选项名称类型需求说明
printResponseboolean没有若为 true,在打印响应时添加代码。 默认是 false。 。 。 .
completeboolean没有若为 true,生成完整的脚本。 若为 false,只生成请求代码。 默认是 false。 。 。 .
elasticsearchUrlstring没有在生成的命令中使用的弹性搜索端点 。 默认是 http://localhost:9200。 。 。 .

密码

PHP导出者为Elasticsearch PHP客户端生成代码.

支持的选项 :

选项名称类型需求说明
printResponseboolean没有若为 true,在打印响应时添加代码。 默认是 false。 。 。 .
completeboolean没有若为 true,生成完整的脚本。 若为 false,只生成请求代码。 默认是 false。 。 。 .
elasticsearchUrlstring没有要使用的弹性搜索端点 。 默认是 http://localhost:9200。 。 。 .

红宝石

Ruby出口商为Elasticsearch Ruby客户端生成代码.

支持的选项 :

选项名称类型需求说明
printResponseboolean没有若为 true,在打印响应时添加代码。 默认是 false。 。 。 .
completeboolean没有若为 true,生成完整的脚本。 若为 false,只生成请求代码。 默认是 false。 。 。 .
elasticsearchUrlstring没有要使用的弹性搜索端点 。 默认是 http://localhost:9200。 。 。 .

摇摆

C#出口商为Elasticsearch.NET客户端生成代码. 与 其他输出者, 代码生成运行在已发送的. NET WASM 捆绑内 单独作为 @elastic/request-converter-dotnet 自.NET以来的软件包 javaScript 中没有客户端的代码模型. 安装在此旁边 软件包,选择与目标匹配的主要.minor版本 弹性搜索版本 :

npm install @elastic/request-converter-dotnet

使用本地制作的捆绑取而代之(例如开发 捆绑自己,设置 CSHARP_REQUEST_CONVERTER_BUNDLE 环境 变量到其切入点的路径,然后运行转换器.

支持选项( snake case, 匹配. NET 捆绑的电线合同) :

选项名称类型需求说明
syntax_modestring没有"descriptor" 用于流利描述链,或 "object_initializer" 用于对象初始化。 默认是 "descriptor"。 。 。 .
use_strongly_typed_documentboolean没有若为 true,字段存取器在示例文档类型上使用羊肉。 默认是 true。 。 。 .
document_type_namestring没有生成代码中使用的文档类型名称 。 默认是 "MyDocument"。 。 。 .
type_name_stylestring没有"Simplified", (中文(简体) ), "Fqn",或 "GlobalFqn" 类型名称渲染。 默认是 "Simplified"。 。 。 .
debugboolean没有若为 true,将转换器诊断器附加到错误消息中。 默认是 false。 。 。 .

命令线接口

为了方便,一个CLI包起 convertRequests 函数也可用.

$ echo GET / > request.txt
$ node_modules/.bin/es-request-converter --format python --complete < request.txt
import os
from elasticsearch import Elasticsearch

client = Elasticsearch(
    hosts=[os.getenv("ELASTICSEARCH_URL")],
    api_key=os.getenv("ELASTIC_API_KEY"),
)

resp = client.info()

使用自定义导出器

您可不通过可用的出口商之一的名称,而是通过 海关出口商实例.

要定义自定义导出格式,请创建执行该格式的类 FormatExporter 接口。 以下是输出名称的出口商示例 请求中使用的API:

import { FormatExporter, convertRequests } from "@elastic/request-converter";

class MyExporter implements FormatExporter {
  async check(requests: ParsedRequest[]): Promise<boolean> { return true; }
  async convert(requests: ParsedRequest[], options: ConvertOptions): Promise<string> {
    return requests.map(req => req.api).join("\n");
  }
}

const apis = await convertRequests("GET /my-index/_search\nGET /\n", new MyExporter(), {});
console.log(apis); // outputs "search\ninfo"

发展

本节介绍日常开发任务.

弹性搜索规格更新

要刷新规格 schema.json 文件,切换到想要的分支(例如:. 9.5)然后运行命令:

npm run update-schema

单位测试

要进行所有单位测试,请使用:

npm run test

要启动一个在源文件更改时自动执行测试的监视器进程, 请使用 :

npm run watch:test

融合测试

集成测试通过转换过程运行存储在schema.json文件中的例子,执行生成的代码,捕捉生成的代码问题的请求,并与初始实例进行比较,由于每个语言客户端解释请求的方式不同,因此有一定的灵活性. 这是一个相当复杂的过程,对大多数但并非所有的例子都行之有效。 已知失败的例子可见于 tests/integration/skip.ts 文档.

整个集成测试套件每周二在协调世界时2:00在GitHub Actions预定的工作流程中运行. 也可以引发来自 工作流程页面目前全程需要约5分钟,所有语言都平行运行。 由语言向后跑的本地跑步预计需要15-20分钟才能完成.

为了在当地进行集成测试,首先安装所有支持语言所需的依赖性:

npm run test:setup

设置命令还针对每种语言分别提供:

npm run test:setup-curl
npm run test:setup-python
npm run test:setup-ruby
npm run test:setup-javascript
npm run test:setup-php

对所有语言进行综合测试:

npm run test:integration

或针对每种语言分别:

npm run test:integration-curl
npm run test:integration-python
npm run test:integration-ruby
npm run test:integration-javascript
npm run test:integration-php

还有可能对所有可用的语言进行单一测试:

npm run test:example CountRequestExample1

线性

运行线圈:

npm run lint
npm run prettier

要自动解决 linters 发现的问题 :

npm run fix

大楼

为了在当地建立图书馆:

npm run build

删除所有构建文件 :

npm run clean

为建立文件:

npm run docs

释放

要准备释放承诺,切换到目标分支(例如. 9.5)并运行:

npm run release

这个脚本在某些情况下可以拒绝运行 :

  • 如果规格是 schema.json 文件未更新
  • 如果目前的分行不是可再放行的分行(例如. main(中文(简体) )
  • 如果当前分支有未承诺的更改

在这些情况下,剧本会说明问题所在以及如何解决这个问题.

如果一切看起来都很好,脚本会提出一个版本编号,可以接受或更改. 然后打开您的默认文本编辑器( 设置在 $EDITOR)和生成的可按需要编辑的发布注释. 一旦退出编辑器,将显示用于发布修改的 diff 。 新闻 ENTER 生成释放承诺或 Ctrl-C 以中止.

因此,释放承诺需要被推入上游存储库:

git push --tags origin $BRANCH

最后,GitHub Actions上有"Publish package to npm"的工作流程,需要开始将发行推向npm.

版本与发布记录

@elastic/request-converter 共发布 39 个版本,首次发布于 2024/06/11;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
9.6.1latest2026/11/058 天前
9.6.02026/08/282 个月前
9.4.2latest-9.42026/08/033 个月前
8.19.3latest-8.192026/08/033 个月前
9.5.12026/08/033 个月前
8.19.22026/07/293 个月前

其他发布通道:previous → 8.19.1,bugfix → 9.1.4,latest-8.19 → 8.19.3,latest-9.4 → 9.4.2。

关于 @elastic/request-converter 的常见问题

@elastic/request-converter 是什么?

弹性搜索请求转换器

如何安装 @elastic/request-converter?

在项目目录运行 npm install @elastic/request-converter,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 es-request-converter,可以用 npx es-request-converter 直接运行。

@elastic/request-converter 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@elastic/request-converter 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@elastic/request-converter 可以商用吗?

@elastic/request-converter 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@elastic/request-converter 的下载量有多少?

根据 npm 官方下载统计,@elastic/request-converter 在 2026/10/14 – 2026/11/12 这 30 天内被下载 383,261 次,日均约 12,775 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elastic/request-converter 还在维护吗?

最新版本 9.6.1 发布于 2026/11/05(8 天前);至今共发布 39 个版本,其中过去 12 个月发布了 13 个;首次发布于 2024/06/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。