--- title: "删除point-in-time" date: 2026-01-06 lastmod: 2026-01-06 description: "介绍如何在 Easysearch 中删除 Point In Time (PIT) 上下文,释放集群资源。" tags: ["搜索", "point-in-time", "资源管理"] summary: "此 API 用于删除 Point In Time (PIT) 搜索上下文,释放集群资源。建议在完成搜索后及时删除不再使用的 PIT。 API # DELETE /_pit DELETE /_pit/_all API 的作用 # 删除 PIT 上下文,主要用途包括: 释放资源:删除不再使用的 PIT,释放内存和计算资源 批量清理:删除所有 PIT 上下文 精确管理:删除指定的 PIT 上下文 删除 PIT 后,该 PIT ID 将无法再用于搜索操作。 API 的参数 # 路由参数 # 此 API 支持两种路由模式: 路由 描述 DELETE /_pit 删除指定的 PIT,需要在请求体中提供 PIT ID 列表 DELETE /_pit/_all 删除所有的 PIT 上下文 查询字符串参数 # 此 API 不支持查询字符串参数。所有参数必须通过请求体传递。" --- 此 API 用于删除 Point In Time (PIT) 搜索上下文,释放集群资源。建议在完成搜索后及时删除不再使用的 PIT。 ## API ``` DELETE /_pit DELETE /_pit/_all ``` ## API 的作用 删除 PIT 上下文,主要用途包括: - **释放资源**:删除不再使用的 PIT,释放内存和计算资源 - **批量清理**:删除所有 PIT 上下文 - **精确管理**:删除指定的 PIT 上下文 删除 PIT 后,该 PIT ID 将无法再用于搜索操作。 ## API 的参数 ### 路由参数 此 API 支持两种路由模式: | 路由 | 描述 | |------|------| | `DELETE /_pit` | 删除指定的 PIT,需要在请求体中提供 PIT ID 列表 | | `DELETE /_pit/_all` | 删除所有的 PIT 上下文 | ### 查询字符串参数 此 API **不支持**查询字符串参数。所有参数必须通过请求体传递。 ### 请求体参数(仅 DELETE /_pit) | 参数 | 类型 | 是否必需 | 描述 | |------|------|----------|------| | `pit_id` | string 或 array | **必需** | 要删除的 PIT ID 或 PIT ID 数组 | ## 请求示例 ### 删除所有 PIT ```bash # 删除所有 PIT 上下文 DELETE /_pit/_all ``` **注意**:使用 `/_all` 路由时,**不能有请求体**。 ### 删除指定的 PIT ```bash # 删除单个 PIT DELETE /_pit Content-Type: application/json { "pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAIWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA" } ``` ### 删除多个 PIT ```bash # 删除多个 PIT(数组格式) DELETE /_pit Content-Type: application/json { "pit_id": [ "pit_id_1_here", "pit_id_2_here", "pit_id_3_here" ] } ``` ## 响应示例 ### 成功响应 - 删除指定的 PIT ```json { "acknowledged": true, "deleted": 3, "failed": 0, "failures": [] } ``` ### 成功响应 - 删除所有 PIT ```json { "acknowledged": true, "deleted": 15 } ``` ### 响应字段说明 | 字段 | 类型 | 描述 | |------|------|------| | `acknowledged` | boolean | 操作是否被确认 | | `deleted` | integer | 成功删除的 PIT 数量 | | `failed` | integer | 删除失败的 PIT 数量 | | `failures` | array | 失败的 PIT 详细信息 | ### 错误响应 ```json { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "unrecognized param: [some_param]" } ], "type": "illegal_argument_exception", "reason": "unrecognized param: [some_param]" }, "status": 400 } ``` ## 使用建议 ### 1. 及时删除不再使用的 PIT ```bash # 搜索完成后立即删除 PIT DELETE /_pit { "pit_id": "your_pit_id_here" } ``` ### 2. 批量删除 ```bash # 完成一批搜索后,批量删除相关 PIT DELETE /_pit { "pit_id": ["pit1", "pit2", "pit3"] } ``` ### 3. 清理所有 PIT(谨慎使用) ```bash # 仅在确认所有 PIT 都不再需要时使用 DELETE /_pit/_all ``` ## PIT 管理最佳实践 1. **搜索完成后删除**:每次搜索完成后立即删除 PIT 2. **使用 try-finally 模式**:确保 PIT 在使用后被删除 3. **定期清理**:定期检查并删除长时间未使用的 PIT 4. **监控 PIT 数量**:使用 `GET /_pit` 监控集群中的 PIT 数量 ## 代码示例(伪代码) ```javascript // 创建 PIT const pitResponse = await client.createPIT({ index: 'my-index', keepAlive: '5m' }); const pitId = pitResponse.pit_id; try { // 使用 PIT 进行搜索 const searchResponse = await client.search({ pit: { id: pitId, keepAlive: '1m' }, query: { match_all: {} }, size: 100 }); // 处理搜索结果... } finally { // 确保删除 PIT await client.deletePIT({ body: { pit_id: pitId } }); } ``` ## 与相关 API 的配合 | API | 功能 | |-----|------| | `POST /{index}/_pit` | 创建 PIT | | `GET /_pit` | 查询 PIT 信息 | | `DELETE /_pit` | 删除指定 PIT | | `DELETE /_pit/_all` | 删除所有 PIT | ## 注意事项 1. **不支持查询字符串参数**:所有参数必须通过请求体传递 2. **_all 路由不能有请求体**:使用 `DELETE /_pit/_all` 时不能提供请求体 3. **ID 验证**:删除不存在的 PIT 不会报错,`deleted` 计数会反映实际删除数量 4. **权限要求**:需要相应的集群管理权限 5. **不可恢复**:删除后 PIT ID 无法恢复,需要重新创建 ## 相关文档 - [创建 point-in-time](./create-point-in-time.md) - [搜索文档](./search-document.md)