Java Elasticsearch 分页查询:使用 from 和 size 参数实现分页
要实现分页,可以使用 Elasticsearch 的 'from' 和 'size' 参数来指定返回结果的起始位置和数量。
假设你已经有一个 Elasticsearch 的 Java 客户端实例 'RestHighLevelClient client',并且已经设置好了你想要查询的索引和查询条件。
下面的代码演示了如何传入当前页数和每页条数来实现分页查询:
import org.elasticsearch.action.search.*;
import org.elasticsearch.client.*;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.builder.*;
public class ElasticsearchPaginationExample {
public static void main(String[] args) throws Exception {
// 创建 Elasticsearch 客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
// 构建查询条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
// 设置分页参数
int currentPage = 1; // 当前页数
int pageSize = 10; // 每页条数
int from = (currentPage - 1) * pageSize; // 计算起始位置
searchSourceBuilder.from(from);
searchSourceBuilder.size(pageSize);
// 创建搜索请求
SearchRequest searchRequest = new SearchRequest("your_index");
searchRequest.source(searchSourceBuilder);
// 执行搜索请求
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits.getHits()) {
// 处理每条搜索结果
// ...
}
// 关闭 Elasticsearch 客户端
client.close();
}
}
在上述代码中,我们使用 'SearchSourceBuilder' 构建查询条件,然后设置 'from' 和 'size' 参数来指定分页查询的起始位置和每页条数。最后,我们使用 'SearchRequest' 发起搜索请求,并通过 'client.search()' 方法执行搜索请求。
请根据你的实际情况替换示例代码中的索引名称和查询条件。
希望对你有帮助!
原文地址: https://www.cveoy.top/t/topic/qxRj 著作权归作者所有。请勿转载和采集!