elasticsearch之scroll滚动查询

es7版本的时候 可以通过 scroll进行滚动查询

滚动查询意思指的是如果获取的数据特别多,那我们可以分批获取数据,给服务器一个处理请求的时间,一次性查询出来数据,分批次进行获取,所以每次进行查询的时候都要传递一个系统的处理时间

第一进行查询的时候 需要指定scroll = time 以及传递 每次获取的条数即可

GET goods/_search?scroll=1m
{
  "query": {
    "match_all": {}
  }
  , "size": 20
}

srocll滚动查询的时候,系统会给我们返回一个scroll_id 系统保存了我们上次查询的快照,

以后每次获取新的数据的时候都需要传递这个 scroll_id 就可以获取接下来的数据

注意:scroll的时间不能设置的太短,也不能设置的太久 es7版本的时候,每次返回的是同一个scroll_id

POST _search/scroll
{
  "scroll" : "1m"
  ,"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAMXFAWcmRUUlp6VmxRd0tlMEpXbllLeXlsQQ=="
}

如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完

使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来
scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的
采用基于_doc进行排序的方式,性能较高
每次发送scroll请求,我们还需要指定一个scoll参数,指定一个时间窗口,每次搜索请求只要在这个时间窗口内能完成就可以了

scoll,看起来挺像分页的,但是其实使用场景不一样。分页主要是用来一页一页搜索,给用户看的;scoll主要是用来一批一批检索数据,让系统进行处理的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值