# @elastic/search-application-client 中文文档

规范地址：https://npmcn.com/package/%40elastic/search-application-client/

版本：8\.9\.0-2
npm 元数据更新时间：2026-09-25T13:39:14.258Z
中文译文更新时间：2026-11-13T11:28:37.179Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：127 kB，13 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2023-07-04T07:52:36.638Z
- 最新版本发布：2024-01-29T12:56:23.619Z
- 近 30 天下载量：4620（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

弹性搜索的搜索应用程序客户端

## 安装

```sh
npm install @elastic/search-application-client
```

也可以使用：`pnpm add @elastic/search-application-client`、`yarn add @elastic/search-application-client`、`bun add @elastic/search-application-client`

## README

# 搜索应用程序客户端

搜索应用程序客户端是一个JavaScript库,提供功能,用于在Elasticsearch中与搜索应用程序互动.

> iQQ 搜索应用程序客户端在 **技术预览** 并且可以更改.

## 快速访问

以下是与重要章节的快速链接:

-   [安装](https://npmcn.com/package/%40elastic/search-application-client/#readme-installation)
-   [使用量](https://npmcn.com/package/%40elastic/search-application-client/#readme-usage)
-   [API 参考](https://npmcn.com/package/%40elastic/search-application-client/#readme-api-reference)
-   [高级使用](https://npmcn.com/package/%40elastic/search-application-client/#readme-advanced-usage)
-   [实例](https://npmcn.com/package/%40elastic/search-application-client/#readme-examples)

## 安装

要安装搜索应用程序客户端,您可以使用npm或纱线.

### 使用 npm :

```bash
npm install @elastic/search-application-client
```

### 使用线条 :

```bash
yarn add @elastic/search-application-client
```

### 通过 CDN 在浏览器中

```html
<script src="https://cdn.jsdelivr.net/npm/@elastic/search-application-client@latest"></script>
```

## 使用量

### 导入客户端

您可以使用以下导入语句在 JavaScript 或 TypeScript 文件中导入搜索应用程序客户端 :

```javascript
import SearchApplicationClient from '@elastic/search-application-client';
```

### 创建客户实例

要使用搜索应用程序客户端, 请使用导入模块返回的函数创建实例 :

```javascript
const client = SearchApplicationClient(applicationName, endpoint, apiKey, params);
```

-   应用程序 名称:搜索应用程序的名称.
-   端点:搜索应用程序端点的URL.
-   apiKey:用于访问搜索应用程序的API密钥.
-   参数(可选):要传递给客户端的额外参数.
-   api 选项( 选项): 要传递给 API 客户端的附加选项 .
    -   缓存扩展( 可选) : 以毫秒计的缓存到期时间 。 默认: 360000 (一个小时).
    -   缓存( 可选的): 启用/ 禁用缓存 。 默认: 真.
    -   头 (可选):要传递给API客户端的附加头.
-   返回 : 返回新的 QueryBuilder 实例的函数 .

### 使用客户端

搜索应用程序客户端提供了一个查询构建类,允许您构建复杂的搜索查询 :

```javascript
const results = await client()
  .query('John')
  .search()
```

搜索方法返回随搜索结果而解决的保证 .

#### 使用侧面

要使用侧面过滤, 请在客户端初始化中指定侧面 :

```javascript
const client = SearchApplicationClient('*search-application-name*', '*elasticsearch-endpoint*', '*apiKey*', {
  facets: {
    category: { type: 'terms', field: 'category.keyword', size: 10 },
    price: { type: 'stats', field: 'price', size: 10, disjunctive: true },
  },
});

const results = await client()
  .addFacetFilter('category', 'electronics')
  .addFacetFilter('price', { from: 100, to: 1000 })
  .addFacetFilter('author', 'orwell') // ❌ Throw an error, because the facet is not specified during initialization
  .setSort({'price': 'desc'})
  .search()
```

#### 使用排序

要使用排序, 请指定字段名称和排序顺序或通过 score 来按相关排序 :

```javascript
const results = await client()
  .setSort([{'publish_date': 'desc'}, "_score"])
  .search()
```

#### 使用页码

要使用页码,请设置页码和页码 :

```javascript
const results = await client()
  .setPageSize(20)
  .setFrom(20 * 2) // For the third page
  .search()
```

默认的页面大小为 10

#### 使用额外参数

```javascript
const results = await client()
  .addParameter('custom-parameter', 'custom-value')
  .search()
```

## API 参考

### `SearchApplicationClient()`

初始化搜索功能 应用程序 Client and return 函数创建查询构建器实例 .

-   `applicationName (string)`: 搜索应用程序的名称.
-   `endpoint (string)`: 搜索应用程序端点的URL.
-   `apiKey (string)`: 访问搜索应用程序的 API 密钥 .
-   `params? (Params)`: 附加参数将传递给客户端.

返回:返回新查询构建实例的函数.

### `QueryBuilder`

此类提供了构建搜索查询的方法.

-   `query(query: string): QueryBuilder` 设置搜索查询。 返回:查询构建实例.
    
-   `addFacetFilter(field: string, value: FilterFieldValue): QueryBuilder` 添加一面过滤器来缩小搜索结果。 返回:查询构建实例.
    
    -   `field (string)`:面部过滤器的字段名.
    -   `value (string | string[] | number | number[])`:平面过滤器的值或值范围.
-   `addParameter(field: string, value: unkown): QueryBuilder` 在查询中添加参数。 返回:查询构建实例.
    
-   `setPageSize(size: number): QueryBuilder` 为返回的最大结果数设定大小。 返回:查询构建实例.
    
-   `setFrom(value: number): QueryBuilder` 定义要跳过的结果数,默认为 0。 返回:查询构建实例.
    
-   `setSort(sort: SortFields): QueryBuilder` 设置搜索结果的排序标准。 返回:查询构建实例.
    
    -   `sort (Record<string, 'desc' | 'asc'> | '_score')[])`: 搜索结果的排序标准.
-   `search(): Promise<ResponseParams>` 向搜索应用程序发送搜索请求。 使用通用类型指定 `hits._source` 类型. 返回:一个解决搜索结果的承诺.
    
    -   点击:搜索点击数组.
    -   方方面面:一系列表面结果.
    -   汇总:包含汇总结果的对象.
    -   总计:搜索结果的总数.
    -   采取: 搜索请求的时间.

关于现有方法及其参数的更详细资料,请参见代码和类型定义.

## 高级使用

### 沸腾模板

```
PUT _application/search_application/example-app
{
  "indices": ["example-index"],
  "template": {
    "script": {
      "lang": "mustache",
      "source": """
        {
          "query": {
            "bool": {
              "must": [
              {{#query}}
              {
                "query_string": {
                  "query": "{{query}}"
                }
              }
              {{/query}}
            ],
            "filter": {{#toJson}}_es_filters{{/toJson}}
            }
          },
          "aggs": {{#toJson}}_es_aggs{{/toJson}},
          "from": {{from}},
          "size": {{size}},
          "sort": {{#toJson}}_es_sort_fields{{/toJson}}
        }
      """,
      "params": {
        "query": "",
        "_es_filters": {},
        "_es_aggs": {},
        "_es_sort_fields": {},
        "size": 10,
        "from": 0
      }
    }
  }
}
```

### 使用自定义模板

要使用自定义模板, 您可以在特定属性或突出属性等参数内更新锅炉板模板 :

```
PUT _application/search_application/example-app
{
  "indices": ["example-index"],
  "template": {
    "script": {
      "lang": "mustache",
      "source": """
        {
          "query": {
            "bool": {
              "must": [
              {{#query}}
                // ...
              {{/query}}
            ],
            "filter": {{#toJson}}_es_filters{{/toJson}}
            }
          },
          "_source": {
            "includes": ["title", "plot"]
          },
          "highlight": {
            "fields": {
              "title": { "fragment_size": 0 },
                "plot": { "fragment_size": 200 }
             }
          },
          "aggs": {{#toJson}}_es_aggs{{/toJson}},
          "from": {{from}},
          "size": {{size}},
          "sort": {{#toJson}}_es_sort_fields{{/toJson}}
        }
      """,
      "params": {
        "query": "",
        "_es_filters": {},
        "_es_aggs": {},
        "_es_sort_fields": {},
        "size": 10,
        "from": 0
      }
    }
  }
}
```

### 模板使用词典

要使用有打字检查的模板,您可以通过运行命令以预建的json schema更新您的模板 :

```bash
npx @elastic/search-application-client update-template
```

一旦您更新了模板, 它将使用计划来对每个请求进行参数的打字检查 .

## 实例

您可以在 [实例/框](https://npmcn.com/package/%40elastic/search-application-client/examples/sandbox/README.md) 此仓库的目录 。 这些例子说明如何使用搜索-应用程序-客户端库.

## 常见问题

### @elastic/search-application-client 是什么？

弹性搜索的搜索应用程序客户端

### 如何安装 @elastic/search-application-client？

在项目目录运行 npm install @elastic/search-application-client，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 update-template，可以用 npx update-template 直接运行。

### @elastic/search-application-client 支持 TypeScript 吗？

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

### @elastic/search-application-client 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @elastic/search-application-client 可以商用吗？

@elastic/search-application-client 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @elastic/search-application-client 的下载量有多少？

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

### @elastic/search-application-client 还在维护吗？

最新版本 8\.9\.0-2 发布于 2024/01/29（2 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/07/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

