es java api 分页,ES 解决深分页问题,自己实现Scroll 查询 API

一、前言:

ES 普通的分页查询有深分页限制,默认是10000条。(因为越往后面分越耗内存)所以要查询1万条以后的数据,要不就缩小查询范围,要不用别的方法。

ES 提供了 scroll 查询。第一次查询获取到scroll_id,下次查询通过scroll_id直接查询。scroll相当于维护了一份当前索引段的快照信息,这个快照信息是你执行这个scroll查询时的快照。在这个查询后的任何新索引进来的数据,都不会在这个快照中查询到。但是它相对于from和size,不是查询所有数据然后剔除不要的部分,而是记录一个读取的位置,保证下一次快速继续读取。而且也不能排序,只能按默认的文档顺序,比较适合查询扫描全量数据。

1、看一个DEMO

private static void scrollSearch(String indexName, String typeName,

String... ids) {

IdsQueryBuilder qb = QueryBuilders.idsQuery().addIds(ids);

SearchResponse sResponse = client.prepareSearch(indexName)

.setTypes(typeName)

.setQuery(qb)

.setScroll(new TimeValue(5000))

.setSize(50)

.execute()

.actionGet();

int tShards = sResponse.getTotalShards();

long timeCost = sResponse.getTookInMillis();

int sShard

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值