

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon OpenSearch 服务中搜索时间点
<a name="pit"></a>

时间点（PIT）是一种搜索类型，可让您对固定时间的数据集运行不同的查询。通常，当您在不同的时间点对同一个索引运行相同的查询时，由于文档会不断被索引、更新和删除，所以会收到不同的结果。使用 PIT，您可以根据数据集的恒定状态进行查询。

PIT 搜索的主要用途是与 `search_after` 功能结合使用。这是中的首选分页方法 OpenSearch，特别是对于深度分页，因为它在时间上冻结的数据集上运行，不绑定到查询，并且支持向前和向后一致的分页。您可以将 PIT 与运行 OpenSearch 版本 2.5 的域一起使用。

**注意**  
本主题概述了 PIT，以及在托管 Amazon S OpenSearch ervice 域而不是自管理 OpenSearch 集群上使用 PIT 时需要考虑的一些事项。有关 PIT 的完整文档，包括全面的 API 参考，请参阅开源 OpenSearch 文档[中的时间点](https://opensearch.org/docs/latest/opensearch/point-in-time/)。

## 注意事项
<a name="pit-considerations"></a>

在配置 PIT 搜索时，请考虑以下事项：
+ 如果您要从运行 2.3 OpenSearch 版本的域名升级，并且需要对 PIT 操作进行精细的访问控制，则需要手动添加这些操作和角色。
+ PIT 没有弹性。节点重启、节点终止、蓝/绿部署和 OpenSearch 进程重启会导致所有 PIT 数据丢失。
+ 如果分片在 blue/green 部署期间重新定位，则只会将实时数据段传输到新节点。PIT 持有的分片段（包括独占分片和与实时数据共享的分片）仍保留在旧节点上。
+ PIT 搜索目前不适用于异步搜索。

## 创建 PIT
<a name="pit-sample"></a>

要运行 PIT 查询，请使用以下格式将 HTTP 请求发送至 `_search/point_in_time`：

```
POST opensearch-domain/my-index/_search/point_in_time?keep_alive=time
```

可以指定以下 PIT 选项：


| 选项 | 说明 | 默认 值 | 必需 | 
| --- | --- | --- | --- | 
| keep\$1alive |  保留 PIT 的时间长度。每次使用搜索请求访问 PIT 时，PIT 的生命周期都会根据 `keep_alive` 参数的时间长度延长。创建 PIT 时此查询参数是必需的，但在搜索请求中则是可选的。  |  | 是 | 
| preference |  指定用于执行搜索的节点或分片的字符串。  | 随机 | 否 | 
| routing | 指定将搜索请求传输到某个具体分片的字符串。 | 该文件的 \$1id | 否 | 
| expand\$1wildcards | 指定可以匹配通配符模式的索引类型的字符串。支持逗号分隔值。有效值如下所示：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/pit.html) | open | 否 | 
| allow\$1partial\$1pit\$1creation | 用于指定是否创建部分失败的 PIT 的布尔值。 | true | 否 | 

**示例响应**

```
{
    "pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAIWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA",
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "creation_time": 1658146050064
}
```

当您创建 PIT 时，您会在响应中收到 PIT ID。这是您用来通过 PIT 进行搜索的 ID。

## 时间点权限
<a name="pit-permissions"></a>

PIT 支持[精细访问控制](fgac.md)。如果您要升级到 OpenSearch 版本 2.5 的域并且需要精细的访问控制，则需要手动创建具有以下权限的角色：

```
# Allows users to use all point in time search search functionality
point_in_time_full_access:
  reserved: true
  index_permissions:
    - index_patterns:
        - '*'
      allowed_actions:
        - "indices:data/read/point_in_time/create"
        - "indices:data/read/point_in_time/delete"
        - "indices:data/read/point_in_time/readall"
        - "indices:data/read/search"
        - "indices:monitor/point_in_time/segments"
        

# Allows users to use point in time search search functionality for specific index
# All type operations like list all PITs, delete all PITs are not supported in this case

point_in_time_index_access:
  reserved: true
  index_permissions:
    - index_patterns:
        - 'my-index-1'
      allowed_actions:
        - "indices:data/read/point_in_time/create"
        - "indices:data/read/point_in_time/delete"
        - "indices:data/read/search"
        - "indices:monitor/point_in_time/segments"
```

对于 OpenSearch 版本为 2.5 及更高版本的域名，您可以使用内置`point_in_time_full_access`角色。有关更多信息，请参阅 OpenSearch 文档中的[安全模型]( https://opensearch.org/docs/latest/search-plugins/point-in-time/#security-model)。

## PIT 设置
<a name="pit-diff"></a>

OpenSearch 允许您使用 `_cluster/settings` API 更改所有可用的 PI [T 设置](https://opensearch.org/docs/latest/search-plugins/point-in-time-api/#pit-settings)。在 S OpenSearch ervice 中，您目前无法修改设置。

## 跨集群搜索
<a name="pit-ccs"></a>

您可以 PITs 跨集群创建 PITs、使用 PIT IDs 进行搜索 PITs、列出和删除，但有以下小限制：
+ 您 PITs 只能在源域上列出所有内容和删除所有内容。
+ 作为跨群集搜索查询的一部分，您不能最大限度地减少网络往返行程。

有关更多信息，请参阅 [在 Amazon OpenSearch 服务中进行跨集群搜索](cross-cluster-search.md)。

## UltraWarm
<a name="pit-ultrawarm"></a>

使用 UltraWarm 索引进行的 PIT 搜索继续有效。有关更多信息，请参阅 [UltraWarm 亚马逊 OpenSearch 服务的存储空间](ultrawarm.md)。

**注意**  
您可以在中监控 PIT 搜索统计信息 CloudWatch。有关指标的完整列表，请参阅[时间点指标](managedomains-cloudwatchmetrics.md#managedomains-cloudwatchmetrics-pit)。