Point In Time
更新时间:2026-01-19
概述
PIT(Point In Time)核心作用是创建一个数据在某个特定时间点的“轻量级快照”。
用户可以基于 PIT 冻结索引数据,建立快照查询,并且消耗小,速度快。
PIT 保证在多次查询中,看到的都是完全相同的数据状态,从而保证分页、聚合、分析等一系列操作的一致性。
注意事项
- 目前仅 7.10.2 版本的 Elasticsearch 集群支持 PIT。
- 需要升级到 1.8.2 及以上内核。
优势
- PIT 本身非常轻量,解决深度分页对协调节点和集群开销巨大的性能问题。
- PIT 可以保证查询的一致性,确保多次查询和分页看到的是同一时刻的数据状态。
使用方式
创建 PIT
创建 PIT 的 API,支持指定多个索引或者别名。冻结目标索引在创建时刻的状态,确保后续查询数据一致性。请求需传入 keep_alive 参数定义存活时长,返回唯一 PIT ID 供后续操作,适用于一致性分页、跨请求查询等场景。
JSON
1POST /index2/_pit?keep_alive=12m
| 参数 | 必须 | 说明 |
|---|---|---|
| keep_alive | yes | PIT 的存活时间 |
| allow_partial_search_results | no | 创建 PIT 过程中,是否允许分片存在问题。 如果为 true ,则存在部分分片不可用的时候,也能创建成功 |
基于PIT查询
通过指定 ID 关联已创建的 PIT 执行一致性查询。该 API 基于 PIT 冻结的索引快照返回数据,不受查询期间索引数据写入、更新或删除操作的影响,可保障跨请求查询结果的准确性。
JSON
1GET /_search
2{
3 "pit": {
4 "id": "y_aYAABiLhZVRmN6cWpkOVIyeTJ6U5ZwAA"
5 },
6 "query": {
7 "bool": {
8 "must": [
9 {"term":{
10 "title":"t3"
11 }}
12 ]
13 }
14 }
15}
注意:只能使用 GET /_search,不能指定索引
| 参数 | 必须 | 说明 |
|---|---|---|
| id | yes | 指定 PIT 的 ID |
| keep_alive | no | 更新 PIT 的存活时间 |
删除PIT
手动销毁指定 PIT 的 API。请求体中需传入 ID 参数指定待删除的 PIT 唯一标识,执行后将立即释放该 PIT 占用的集群资源,避免因 PIT 超期未清理造成资源浪费,保障集群性能稳定。
JSON
1DELETE /_pit
2{
3 "id" : "y_aYAABiLhZVRmN6cWpkOVIyeTJ6U5ZwAA"
4}
列举PIT
查询集群内所有活跃 PIT 信息的 API。返回结果包含各 PIT 的唯一标识、创建时间、更新时间及剩余存活时长。
JSON
1GET /_pit/_all
列举PIT的segment信息
查询集群内所有活跃 PIT 关联分片段信息的 API。
JSON
1GET /_cat/_pit_segments/_all
