elasticsearch scroll查询
一般的分页查询请求:from、size、n(主分片数)
请求会分发到对应主分片或者副本分片上,分片向协调节点返回(from+size)条数据,n个分片共返回数据(from+size)*n条数据;
协调节点对数据进行排序,然后向客户端返回from到from+size之间的数据
scroll查询:如果要查询100页数据,每页数据100条,则需重复上述过程100次,且随着from的增大,查询效率会越来越慢,使用scroll查询只要一次查询,查询过程:
每个分片返回10000条数据,协调节点共接收数据10000*n条;
协调节点对数据排序后,返回前10000条数据给客户端
********************
相关类与接口
ElasticsearchRestTemplate:操作类
public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate implements ElasticsearchOperations, EsClient<RestHighLevelClient>, ApplicationContextAware {
public <T> ScrolledPage<T> startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz) {
public <T> ScrolledPage<T> startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class<T> clazz) {
public <T> ScrolledPage<T> startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz, SearchResultMapper mapper) {
public <T> ScrolledPage<T> startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class<T> clazz, SearchResultMapper mapper) {
public <T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz) {
public <T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz, SearchResultMapper mapper) {
public void clearScroll(String scrollId) {
ScrolledPage:scroll分页
public interface ScrolledPage<T> extends Page<T> {
String getScrollId();
}
Page:分页
public interface Page