附近查询
@SpringBootTestpublic class MyTest{ //注入RestHighLevelClient对象 @Autowired private RestHighLevelClient restHighLevelClient; @Test public void test() throws IOException { //准备SearchRequest请求对象,并指定索引库名 SearchRequest searchRequest = new SearchRequest(索引库名); //准备MatchAllQueryBuilder查询对象 MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery(); //在SearchRequest请求对象中放入MatchAllQueryBuilder查询对象 searchRequest.source().query(matchAllQueryBuilder); //根据距离进行排序 searchRequest.source().sort( SortBuilders.geoDistanceSort(地理坐标字段名, new GeoPoint(纬度, 经度) ) .order(SortOrder.ASC) .unit(DistanceUnit.KILOMETERS) //指定距离单位 ); //发送请求,得到响应对象 SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); //从响应对象中获取响应结果 SearchHits searchHits = searchResponse.getHits(); //获取文档的总条数 long total = searchHits.getTotalHits().value; //获取搜索结果数组 SearchHit[] hits = searchHits.getHits(); //创建文档集合,用于存放结果 List<文档类名> 集合对象名 = new ArrayList<>(); //遍历数组 for (SearchHit hit : hits) { //获取Json格式的文档内容 String json = hit.getSourceAsString(); //反序列化Json,这里需要引入fastjson的依赖 文档类名 文档对象名 = JSON.parseObject(json, 文档类名.class); //获取排序值,即获取距离信息 Object[] sortValues = hit.getSortValues(); if (sortValues.length > 0) { Object sortValue = sortValues[0]; //将距离信息放入文档对象中 文档对象名.set距离(sortValue.toString() + 距离单位); } //将结果放入集合 集合对象名.add(文档对象名); } }}