ElasticSearch scan、scrollid简单使用,超过10000条数量限制

本文介绍了一种使用Spring Data Elasticsearch进行批量查询的方法。通过NativeSearchQueryBuilder构建查询条件,并利用scroll API来滚动查询大量数据,有效提高了数据检索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本 : spring-data-elasticsearch-2.1.8.RELEASE.jar

public List<Long> searchIds(Param param) {
	
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
    		.withQuery(queryBuilder)
    		.withIndices("index") 
    		.withTypes("type")
            .withPageable(new PageRequest(0, 1000)).build();  
    String scrollId = elasticsearchTemplate.scan(searchQuery, 1000*60, false);  
    
    List<Long> ids = new ArrayList<Long>(12000);  
    boolean hasRecords = true;  
    while (hasRecords) {  
        Page<EsEntity> page = elasticsearchTemplate.scroll(scrollId, 1000*60, EsEntity.class);  
        if (page.hasContent()) {  
        	page.getContent().forEach(item -> ids.add(item.getId()));
        } else {  
            hasRecords = false;  
        }  
    }  
    elasticsearchTemplate.clearScroll(scrollId);  


	return ids;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值