【发布时间】:2016-02-09 19:54:39
【问题描述】:
我正在构建一个应用程序,该应用程序需要弹性搜索来根据纬度和经度查找最近的位置。目前,我可以根据 GeoPoint 和以公里为单位的最大距离来执行此操作。
@Override
public List<CityDefinition> findCitiesNearby(GeoPoint geo, double distance, String source) {
LOGGER.info("<findCitiesNearby>");
FilterBuilder filterBuilderGeo = FilterBuilders.geoDistanceFilter("geo").point(geo.getLat(), geo.getLon()).distance(distance, DistanceUnit.KILOMETERS);
SearchQuery q = new NativeSearchQueryBuilder()
.withFilter(filterBuilderGeo);
List<CityDefinition> fields = esOps.queryForList(q, CityDefinition.class);
return fields;
}
这几乎是完美的,但我希望弹性返回最近的位置,而不是在给定的距离内搜索,无论距离如何。这可能吗?如果是,我该怎么做?
【问题讨论】:
标签: java geolocation elasticsearch geopoints