在ES中,分页查询当页数非常大之后,会很耗费集群的内存资源,可能会导致内存溢出等问题;所以当我们需要查询很多也数据的时候,选择使用scroll方式,下面是一个简单的demo:
引入依赖:
org.elasticsearch
elasticsearch
6.5.4
org.elasticsearch.client
elasticsearch-rest-high-level-client
6.5.4
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.should(QueryBuilders.termQuery("age","30"));
// 存活时间,当索引数据量特别大时,出现超时可能性大,此值适当调大
String index = "index";
Scroll scroll = new Scroll(TimeValue.timeValueMinutes(10L));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQuery);
searchSourceBuilder.size(500);
SearchRequest searchRequest = new SearchRequest()
// ES7已经去掉type,查询时加type
.indices(index)
.scroll(scroll