python elasticsearch_dsl PIT Point in time API 查询

默认情况下,搜索请求针对目标索引的最新可见数据(称为时间点)执行。elasticsearchpit(时间点)是一种轻量级视图,可以查看数据在启动时的状态。在某些情况下,最好使用同一时间点执行多个搜索请求。例如,如果在search_after请求之间发生刷新,那么这些请求的结果可能不一致,因为在搜索之间发生的更改仅在最近的时间点可见。

python 复制代码
from elasticsearch_dsl import Search
from elasticsearch_dsl import connections
from elasticsearch_dsl import Q as esQ
conn = connections.create_connection(hosts=['192.168.214.133'],port=31920,http_auth="elastic:test")

response = conn.open_point_in_time(index="test",keep_alive="1m")
# 获取到id
pit_id = response['id']
search = Search(using=conn)
search.query=esQ("match_all")
search = search.extra(pit={"id": pit_id, "keep_alive": "1m"})
search = search.sort('-_shard_doc')
search = search.extra(size=1)

def loop_value(search):
    try:
        print(search.to_dict())
        response = search.execute()
        value = response['hits']['hits'][-1]['sort']
        print(response['hits']['hits'])
        if value[0]>0:
            search = search.extra(search_after=value)
            loop_value(search)
    except Exception as e:
        print(str(e))
loop_value(search)
conn.close_point_in_time(body={"id": pit_id})

对应的dsl

bash 复制代码
POST /test/_pit?keep_alive=10m

DELETE /_pit
{
  "id":"gLuKBAEFZWxsaXMWVUpRaEYxY2VTZVd2eFlYZWZLbEU3QQAWOGxDOW1rQzZTMTJJVVJubDJxM196dwAAAAAAAAAN8RZpUTdEYlBaclJ0ZThIb0YxTWQ3d0tRAAEWVUpRaEYxY2VTZVd2eFlYZWZLbEU3QQAA"
}


GET _search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "_shard_doc": {
        "order": "desc"
      }
    }
  ],"pit": {
    "id": "gLuKBAEFZWxsaXMWVUpRaEYxY2VTZVd2eFlYZWZLbEU3QQAWOGxDOW1rQzZTMTJJVVJubDJxM196dwAAAAAAAAAZxBZpUTdEYlBaclJ0ZThIb0YxTWQ3d0tRAAEWVUpRaEYxY2VTZVd2eFlYZWZLbEU3QQAA",
    "keep_alive": "1m"
  }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html

相关推荐
阿豪只会阿巴8 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——项目介绍
javascript·python·django·html
qq_4135020210 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
yexuhgu10 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python
AC赳赳老秦10 小时前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
PILIPALAPENG10 小时前
第4周 Day 1:智能体记忆系统——给 Agent 一个"大脑"
前端·人工智能·python
DavidTaozhe10 小时前
一文搞懂外汇接口怎么实时更新美元汇率
大数据·python
用户789377339085311 小时前
Docker 部署踩坑记录:从“构建失败”到“服务跑通”,以及为什么数据被清空了
python·docker
再玩一会儿看代码11 小时前
如何理解神经网络中的权重参数?从一张图看懂模型参数量计算
人工智能·经验分享·python·深度学习·神经网络·机器学习
2301_7796224111 小时前
mysql如何通过主从备份实现读写分离_配置mysql架构模式
jvm·数据库·python
m0_7411733311 小时前
HTML5中WebSocket在弱网环境下的延迟抖动算法补偿
jvm·数据库·python