分页
@Testpublic void testSearchAllPage() throws IOException {// 搜索请求对象SearchRequest searchRequest = new SearchRequest("elasticsearch_test");// 搜索源构建对象SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 设置搜索方法searchSourceBuilder.query(QueryBuilders.matchAllQuery());searchSourceBuilder.fetchSource(new String[]{"name", "price", "timestamp"}, new String[]{});// 设置分页参数int page = 2;int size = 2;// 计算出 fromint form = (page - 1) * size;searchSourceBuilder.from(form);searchSourceBuilder.size(size);// 设置price 降序searchSourceBuilder.sort("price", SortOrder.DESC);// 请求对象设置 搜索源对象searchRequest.source(searchSourceBuilder);// 使用client 执行搜索SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);// 搜索结果SearchHits hits = searchResponse.getHits();// 匹配到的总记录数TotalHits totalHits = hits.getTotalHits();System.out.println("查询到的总记录数:" + totalHits.value);// 得到的匹配度高的文档SearchHit[] searchHits = hits.getHits();for (SearchHit hit : searchHits) {String id = hit.getId();// 源文档的内容Map<String, Object> sourceMap = hit.getSourceAsMap();String name = (String) sourceMap.get("name");String timestamp = (String) sourceMap.get("timestamp");String description = (String) sourceMap.get("description");Double price = (Double) sourceMap.get("price");System.out.println(name);System.out.println(timestamp);System.out.println(description);System.out.println(price);}}
排序
query方法之后我们可以添加sort的参数来根据查询结果中某一列的数据进行排序。
{"query": {"bool": {"must": [{"match": {"area": "华中地区"}}]}},"sort": [{"gdp": {"order": "asc"}}]}
java代码
public static void baseSortQuery() throws IOException {TermQueryBuilder query = QueryBuilders.termQuery("area", "华中地区");BoolQueryBuilder must = QueryBuilders.boolQuery().must(query);SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(must).sort("gdp",SortOrder.DESC);SearchRequest request = new SearchRequest(INDEX);request.source(sourceBuilder);SearchResponse search =getClient().search(request, RequestOptions.DEFAULT);if (search.getShardFailures().length == 0) {System.out.println("do something");}}
