时间点
使用 时间点 (PIT) API 来管理 PIT。
目录
创建 PIT
2.4 版引入
创建 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 | 字符串 | 用于执行搜索的节点或分片。可选。默认为 random 。 |
路由 | 字符串 | 指定将搜索请求路由到特定分片。可选。默认为文档的 _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 | 长整型 (long) | 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
2.4 版引入
返回 OpenSearch 集群中的所有 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 | 长整型 (long) | PIT 创建的时间,以自纪元以来的毫秒数表示。 |
keep_alive | 长整型 (long) | PIT 的保留时间,以毫秒为单位。 |
删除 PIT
2.4 版引入
删除一个、多个或所有 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,响应包含一个 JSON 对象,其中包含一个 PIT ID 和一个 successful
字段,用于指定删除是否成功。部分失败被视为失败。
{
"pits": [
{
"successful": true,
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAEWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
},
{
"successful": false,
"pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFkhGN09fMVlPUkVPLXh6MUExZ1hpaEEAFjBGbmVEZHdGU1EtaFhhUFc4ZkR5cWcAAAAAAAAAAAIWaXBPNVJtZEhTZDZXTWFFR05waXdWZwEWSEY3T18xWU9SRU8teHoxQTFnWGloQQAA"
}
]
}
响应正文字段
字段 | 数据类型 | 描述 |
---|---|---|
successful | 布尔型 | 删除操作是否成功。 |
pit_id | Base64 编码的二进制 | 要删除的 PIT 的 PIT ID。 |
安全模型
本节描述了在启用安全插件的情况下运行 OpenSearch 时使用 PIT API 操作所需的权限。
您可以使用 point_in_time_full_access
角色访问所有 PIT API 操作。如果此角色不符合您的需求,您可以混合和匹配单个 PIT 权限以适应您的用例。每个操作都对应于 REST API 中的一个操作。例如,indices:data/read/point_in_time/create
权限允许您创建 PIT。以下是可能的权限:
indices:data/read/point_in_time/create
– 创建 APIindices:data/read/point_in_time/delete
– 删除 APIindices:data/read/point_in_time/readall
– 列出所有 PIT APIindices:data/read/search
– 搜索 APIindices:monitor/point_in_time/segments
– PIT 段 API
对于 all
API 操作,例如列出所有和删除所有,用户需要所有索引 (*) 权限。对于搜索、创建 PIT 或删除列表等 API 操作,用户只需要单独的索引权限。
PIT ID 在保存时始终包含底层(已解析的)索引。以下部分描述了别名和数据流所需的权限。
别名权限
对于别名,用户必须对任何 PIT 操作拥有索引或别名权限。
数据流权限
对于数据流,用户必须对任何 PIT 操作同时拥有数据流和数据流的后端索引权限。例如,用户必须拥有 data-stream-11
数据流及其后端索引 .ds-my-data-stream11-000001
的权限。
如果用户只有数据流权限,他们将能够创建 PIT,但在没有后端索引权限的情况下,他们将无法将 PIT ID 用于其他操作,例如搜索。