Elasticsearch - scoll分批查询

场景: 下载某一个索引中的一亿条数据

scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的。

每次发送scroll请求,我们还需要指定一个scoll参数,指定一个时间窗口,每次搜索请求只要在这个时间窗口内能完成就可以了。

查询方式:
大致流程:通过scroll方式在1分钟内请求500条数据,得到数据同时会返回一个"_scroll_id",通过"GET /_search/scroll" + "_scroll_id"请求后续数据

# 通过scroll方式请求500条数据
GET /book/_search?scroll=1m
{
  "query": {
    "match_all": {}
  },
  "size": 500
}

GET /_search/scroll
{
  "scroll": "1m",
  "scroll_id": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFmIydUJSTTlTU25xMlZhWVFJNnUxZXcAAAAAAABYIhY1Ui1ReDRlTlQ5RzBQZXB0cUZTMUl3"
}
posted @ 2024-04-26 09:46  py卡卡  阅读(2)  评论(0编辑  收藏  举报