ElasticSearch scan、scrollid簡單使用,超過10000條數量限制

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

public List<Long> searchIds(Param requestPageParam, Pageable pageRequest) {
	
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
    		.withQuery(EsRepository.searchConditonQueryBuilder(requestPageParam))
    		.withIndices("index") 
    		.withTypes("type")
            .withPageable(new PageRequest(0, 1000)).build();  
    String scrollId = elasticsearchTemplate.scan(searchQuery, 1000*60, false);  
    
    List<Long> ids = new ArrayList<Long>();  
    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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章