Elasticsearch-springboot 实现分页查询
@Resource
private ElasticsearchRestTemplate elasticsearchTemplate;
@Override
public Page<List<T>> queryHitByPage(int pageNo, int pageSize, String keyword, String[] fieldNames, Class<T> clazz) {
MultiMatchQueryBuilder queryBuilder =
buildQueryBuilder(keyword, fieldNames);
// 设置高亮字段
HighlightBuilder highlightBuilder =
builderHighlightBuilder(fieldNames);
PageRequest pageRequest = PageRequest.of((pageNo-1),pageSize);
NativeSearchQuery query = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.withPageable(pageRequest)
.withHighlightBuilder(highlightBuilder)
.build();
SearchHits<T> search = elasticsearchTemplate.search(query, clazz);
List<T> list = getResultList(fieldNames, search);
Page<List<T>> page = new Page<>();
page.setData(list);
page.setPageNo(pageNo);
page.setPageSize(pageSize);
page.setTotalSize((int)search.getTotalHits());
return page;
}
elasticsearch版本:7.6.2
elasticsearch7.6.2版本下载:https://download.csdn.net/download/liu20121787/87408135
代码详见:https://gitee.com/strambuff/elastic-search-demo.git