elasticsearch 深分页查询:scroll

ES对from+size是有限制的,from+size 不能超过10000。
原理:
from+size在ES中的查询方式:
将指定关键字分词
将词汇去分词库中检索,得到多个文档id
取各分片中拉去指定数据(耗时较长)
根据scroe排序(耗时较长)
根据from舍弃一部分数据
返回查询结果
scroll在ES中的查询方式:
将指定关键字分词
将词汇去分词库中检索,得到多个文档id
将文档id存放在上下文中
根据指定size去上下文中检索指定个数的数据,拿完数据的文档id,会从上下文中移除
如果需要下一页数据,直接去ES上下文中,查询后续内容
循环4,5
#测试--scroll查询:执行scroll查询,返回第一页数据,并且将文档id信息存放在ES上下文中,指定生存时间1m
POST /king_test_person/_search?scroll=1m
{
  "query": {
    "match_all": {}
  }, 
  "size": 2,
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

#测试--scroll查询:根据scroll查询下一页数据 POST /_search/scroll { "scroll_id":"FGluY2x1ZGVfY29udGV4dF91dWlkDnF1ZXJ5VGhlbkZldGNoAxZOSFpoaExrN1JVS3RVU1dLbWpuWUlnAAAAAAACTZcWeFdCZGlPRnFTejJXeWJ1ZmlKWEF4QRY4cXpzMU5HbFJZTzdUNm84NXVMdTV3AAAAAAADghwWMHVKNERoTGpRdmF5dm1ZeTZzUk8tURY1QXo5cEhuelRJMk5TMzlJMVdlaG5BAAAAAAAC4_sWUWc4X3M1ZFdUbC01Y0NGODNhbHZwQQ==", "scroll":"1m" }
 
#测试--scroll查询:删除scroll在ES上下文中的数据 DELETE /_search/scroll/FGluY2x1ZGVfY29udGV4dF91dWlkDnF1ZXJ5VGhlbkZldGNoAxZOSFpoaExrN1JVS3RVU1dLbWpuWUlnAAAAAAACTUwWeFdCZGlPRnFTejJXeWJ1ZmlKWEF4QRY4cXpzMU5HbFJZTzdUNm84NXVMdTV3AAAAAAADgY0WMHVKNERoTGpRdmF5dm1ZeTZzUk8tURY1QXo5cEhuelRJMk5TMzlJMVdlaG5BAAAAAAAC44EWUWc4X3M1ZFdUbC01Y0NGODNhbHZwQQ==

 

posted @ 2024-01-30 08:36  king_wq_庆  阅读(32)  评论(0编辑  收藏  举报