时间点 API
使用 时间点(PIT) API 来管理 PIT。
创建 PIT
创建一个 PIT。keep_alive 查询参数是必需的;它指定了 PIT 的保持时间。
端点
POST /<target_indexes>/_search/point_in_time?keep_alive=1h&routing=&expand_wildcards=&preference=
路径参数
| 参数 | 数据类型 | 描述 |
|---|---|---|
| target_indexes | 字符串 | PIT 的目标索引名称。可以包含逗号分隔的列表或通配符索引模式。 |
查询参数
| 参数 | 数据类型 | 描述 |
|---|---|---|
| keep_alive | 时间 | PIT 的保持时间。每次使用搜索 API 访问 PIT 时,PIT 的生存时间都会延长等于 keep_alive 参数的时间量。必需。 |
| preference | 字符串 | 用于执行搜索的节点或分片。可选。默认为随机。 |
| routing | 字符串 | 指定将搜索请求路由到特定分片。可选。默认为文档的 _id。 |
| expand_wildcards | 字符串 | 可以匹配通配符模式的索引类型。支持逗号分隔的值。有效值如下: - all:匹配任何索引或数据流,包括隐藏的。- open:匹配开放、非隐藏的索引或非隐藏的数据流。- closed:匹配关闭、非隐藏的索引或非隐藏的数据流。- hidden:匹配隐藏的索引或数据流。必须与 open、closed 或 open 和 closed 两者结合使用。- none:不接受任何通配符模式。可选。默认为 open。 |
| allow_partial_pit_creation | 布尔值 | 指定是否在部分失败时创建 PIT。可选。默认为 true。 |
示例请求
POST /my-index-1/_search/point_in_time?keep_alive=100m
示例响应
{
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAIWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA",
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"creation_time": 1658146050064
}
响应正文字段
| 字段 | 数据类型 | 描述 |
|---|---|---|
| pit_id | Base64 编码的二进制 | PIT ID。 |
| creation_time | 长整型 | PIT 的创建时间,自纪元以来的毫秒数。 |
延长 PIT 时间
您可以在执行搜索时,在 pit 对象中提供 keep_alive 参数来延长 PIT 时间:
GET /_search
{
"size": 10000,
"query": {
"match" : {
"user.id" : "elkbee"
}
},
"pit": {
"id": "46ToAwMDaWR5BXV1aWQyKwZub2RlXzMAAAAAAAAAACoBYwADaWR4BXV1aWQxAgZub2RlXzEAAAAAAAAAAAEBYQADaWR5BXV1aWQyKgZub2RlXzIAAAAAAAAAAAwBYgACBXV1aWQyAAAFdXVpZDEAAQltYXRjaF9hbGw_gAAAAA==",
"keep_alive": "100m"
},
"sort": [
{"@timestamp": {"order": "asc"}}
],
"search_after": [
"2021-05-20T05:30:04.832Z"
]
}
搜索请求中的 keep_alive 参数是可选的。它指定延长 PIT 保持时间的量。
列出所有 PIT
返回 UDB-SX 集群中的所有 PIT。
跨集群行为
列出所有 PIT API 仅返回本地 PIT 或混合 PIT(在本地和远程集群中创建的 PIT)。它不返回完全远程的 PIT。
示例请求
GET /_search/point_in_time/_all
示例响应
{
"pits": [
{
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAEWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA",
"creation_time": 1658146048666,
"keep_alive": 6000000
},
{
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAIWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA",
"creation_time": 1658146050064,
"keep_alive": 6000000
}
]
}
响应正文字段
| 字段 | 数据类型 | 描述 |
|---|---|---|
| pits | JSON 对象数组 | 所有 PIT 的列表。 |
每个 PIT 对象包含以下字段。
| 字段 | 数据类型 | 描述 |
|---|---|---|
| pit_id | Base64 编码的二进制 | PIT ID。 |
| creation_time | 长整型 | PIT 的创建时间,自纪元以来的毫秒数。 |
| keep_alive | 长整型 | PIT 的保持时间,以毫秒为单位。 |
删除 PIT
删除一个、多个或全部 PIT。当 keep_alive 时间段结束后,PIT 会自动删除。但是,为了释放资源,您可以使用删除 PIT API 来删除 PIT。删除 PIT API 支持按 ID 删除 PIT 列表或一次性删除所有 PIT。
跨集群行为
按 ID 删除 PIT API 完全支持删除跨集群 PIT。
删除所有 PIT API 仅删除本地 PIT 或混合 PIT(在本地和远程集群中创建的 PIT)。它不删除完全远程的 PIT。
示例请求:删除所有 PIT
DELETE /_search/point_in_time/_all
如果要删除一个或多个 PIT,请在请求正文中指定它们的 PIT ID。
请求正文字段
| 字段 | 数据类型 | 描述 |
|---|---|---|
| pit_id | Base64 编码的二进制 或其数组 | 要删除的 PIT 的 PIT ID。必需。 |
示例请求:按 ID 删除 PIT
DELETE /_search/point_in_time
{
"pit_id": [
"o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAEWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA",
"o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAIWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
]
}
示例响应
对于每个 PIT,响应包含一个带有 PIT ID 和 successful 字段的 JSON 对象,该字段指示删除是否成功。部分失败被视为失败。
{
"pits": [
{
"successful": true,
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAEWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
},
{
"successful": false,
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAIWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
}
]
}
响应正文字段
| 字段 | 数据类型 | 描述 |
|---|---|---|
| successful | 布尔值 | 删除操作是否成功。 |
| pit_id | Base64 编码的二进制 | 要删除的 PIT 的 PIT ID。 |
PIT 段
与CAT 段 API 类似,PIT 段 API 通过描述 PIT 的 Lucene 段来提供有关其磁盘使用情况的低级信息。PIT 段 API 支持按 ID 列出特定 PIT 的段信息或一次性列出所有 PIT 的段信息。
示例请求:所有 PIT 的段
GET /_cat/pit_segments/_all
如果要为一个或多个 PIT 列出段信息,请在请求正文中指定它们的 PIT ID。
请求正文字段
| 字段 | 数据类型 | 描述 |
|---|---|---|
| pit_id | Base64 编码的二进制 或其数组 | 要列出段的 PIT 的 PIT ID。必需。 |
示例请求:按 ID 列出 PIT 的段
GET /_cat/pit_segments
{
"pit_id": [
"o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAEWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA",
"o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAIWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
]
}
示例响应
index shard prirep ip segment generation docs.count docs.deleted size size.memory committed searchable version compound
index1 0 r 10.212.36.190 _0 0 4 0 3.8kb 1364 false true 8.8.2 true
index1 1 p 10.212.36.190 _0 0 3 0 3.7kb 1364 false true 8.8.2 true
index1 2 r 10.212.74.139 _0 0 2 0 3.6kb 1364 false true 8.8.2 true
PIT 设置
您可以为 PIT 指定以下设置。
| 设置 | 描述 | 默认值 |
|---|---|---|
| point_in_time.max_keep_alive | 集群级设置,指定 keep_alive 参数的最大值。 |
24h |
| search.max_open_pit_context | 节点级设置,指定节点上打开的 PIT 上下文的最大数量。 | 300 |