elasticsearch查询20公里以内的数据并按距离升序排序data es写法

原创
2019/10/16 15:31
阅读数 2.3K
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();//这暂wei加入业务查询条件
queryBuilder.withQuery(boolQueryBuilder);
//距离限制
GeoDistanceQueryBuilder distanceQueryBuilder=new GeoDistanceQueryBuilder("location");
distanceQueryBuilder.point(latitude,longitude);
distanceQueryBuilder.distance("20", DistanceUnit.KILOMETERS);//设置二十公里以内的学校
boolQueryBuilder.filter(distanceQueryBuilder);
System.out.println(boolQueryBuilder.toString());
//创建距离排序
GeoDistanceSortBuilder distanceSortBuilder =new GeoDistanceSortBuilder("location", latitude, longitude);
distanceSortBuilder.unit(DistanceUnit.KILOMETERS);
distanceSortBuilder.order(SortOrder.ASC);
//按距离降序,评分降序
queryBuilder.withSort(distanceSortBuilder);
queryBuilder.withSort(SortBuilders.fieldSort("score").order(SortOrder.DESC));
queryBuilder.withPageable(PageRequest.of(PageUtil.getPage(param.getPage())-1,PageUtil.getPageSize(param.getPage_size())));
SearchQuery searchQuery=queryBuilder.build();
Page<CourseIndex> page= courseEsRepository.search(searchQuery);
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部