本文使用SpringBoot整合ElasticSearch实现分页查询
环境准备
还是继续使用spring-boot-starter-data-elasticsearch来实现分页查询操作
<!-- spring-boot-starter-data-elasticsearch-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.6.6</version>
</dependency>
数据准备
分页查询
方式一
使用ElasticsearchRestTemplate来实现
import cn.wideth.po.Article;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Api(value = "es分页查询测试")
@RestController
@RequestMapping("/api/listEs")
public class ArticleListController {
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
// 分页列表查询
// 旧版本的 Repository 中的 search 方法被废弃了。
// 这里采用 ElasticSearchRestTemplate
@GetMapping("/pageList")
@ApiOperation("ES分页查询-方法一")
public Map pageList(Integer currentPage, Integer limit) {
NativeSearchQuery query = new NativeSearchQuery(new BoolQueryBuilder());
query.setPageable(PageRequest.of(currentPage, limit));
// 方法1:
SearchHits<Article> searchHits = elasticsearchRestTemplate.search(query, Article.class);
List<Article> articles = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());
Map jsonResult = new LinkedHashMap<>();
jsonResult.put("count", searchHits.getTotalHits());
jsonResult.put("articles", articles);
return jsonResult;
}
}
程序结果
方式二
使用ElasticsearchOperations来实现
import cn.wideth.po.Article;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Api(value = "es分页查询测试2")
@RestController
@RequestMapping("/api/listEs")
public class ArticleListTwoController {
@Autowired
private ElasticsearchOperations elasticsearchOperations;
// 分页列表查询
// 旧版本的 Repository 中的 search 方法被废弃了。
// 这里采用 ElasticsearchOperations 来进行分页查询
@GetMapping("/pageList2")
@ApiOperation("ES分页查询-方法二")
public Map pageList2(Integer currentPage, Integer limit) {
NativeSearchQuery query = new NativeSearchQuery(new BoolQueryBuilder());
query.setPageable(PageRequest.of(currentPage, limit));
// 方法2:
SearchHits<Article> searchHits = elasticsearchOperations.search(query, Article.class);
List<Article> articles = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());
Map jsonResult = new LinkedHashMap<>();
jsonResult.put("count", searchHits.getTotalHits());
jsonResult.put("articles", articles);
return jsonResult;
}
}
程序结果
文章来源:https://www.toymoban.com/news/detail-823337.html
本文小结
本文记录了SpringBoot整合ElasticSearch来实现分页查询的两种方式文章来源地址https://www.toymoban.com/news/detail-823337.html
到了这里,关于SpringBoot整合ElasticSearch实现分页查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!