# @elastic/request-converter 中文文档

规范地址：https://npmcn.com/package/%40elastic/request-converter/

版本：9\.6\.1
npm 元数据更新时间：2026-11-05T14:15:40.423Z
中文译文更新时间：2026-11-13T10:39:36.073Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40elastic/request-converter
原文对照：https://npmcn.com/package/%40elastic/request-converter/?lang=original
项目主页：https://github.com/elastic/request-converter#readme
源码仓库：https://github.com/elastic/request-converter

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：11.8 MB，33 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- peer 依赖：@elastic/request-converter-dotnet ~9\.6\.0
- 首次发布：2024-06-10T19:01:44.639Z
- 最新版本发布：2026-11-05T14:15:39.852Z
- 近 30 天下载量：383261（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：39（近 12 个月 13 个）

## 中文简介

弹性搜索请求转换器

## 安装

```sh
npm install @elastic/request-converter
```

也可以使用：`pnpm add @elastic/request-converter`、`yarn add @elastic/request-converter`、`bun add @elastic/request-converter`

## README

# 请求转换器

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

试试看 [这里](https://elastic.github.io/request-converter)。 。 。 .

## 安装

```bash
npm install @elastic/request-converter
```

## 使用量

```typescript
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();
```

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

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

const formats = listFormats();
```

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

```python
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 时, 您可以导入此库中的函数为 如下:

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

## 可用格式

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

### 卷曲

卷轴导出者使用 [卷曲](https://curl.se/) 命令行 HTTP 客户端.

支持的选项 :

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

### 蟒蛇

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

支持的选项 :

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

### 日记

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

支持的选项 :

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

### 密码

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

支持的选项 :

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

### 红宝石

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

支持的选项 :

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

### 摇摆

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

```bash
npm install @elastic/request-converter-dotnet
```

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

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

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

## 命令线接口

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

```bash
$ 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:

```typescript
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`)然后运行命令:

```bash
npm run update-schema
```

### 单位测试

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

```bash
npm run test
```

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

```bash
npm run watch:test
```

### 融合测试

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

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

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

```bash
npm run test:setup
```

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

```bash
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
```

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

```bash
npm run test:integration
```

或针对每种语言分别:

```bash
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
```

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

```bash
npm run test:example CountRequestExample1
```

### 线性

运行线圈:

```bash
npm run lint
npm run prettier
```

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

```bash
npm run fix
```

### 大楼

为了在当地建立图书馆:

```bash
npm run build
```

删除所有构建文件 :

```bash
npm run clean
```

为建立文件:

```bash
npm run docs
```

### 释放

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

```bash
npm run release
```

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

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

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

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

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

```bash
git push --tags origin $BRANCH
```

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

## 常见问题

### @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 和提交记录判断。

