时间点 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:匹配隐藏的索引或数据流。必须与 openclosedopenclosed 两者结合使用。
- 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