我目前正致力于使用Java为Elasticsearch创建自定义脚本以协助评分。如果我使用mvel,我可以说
doc['field_name'].distance(lat, lon)
在java中,似乎没有(看似可用的)距离函数可以对文档中的字段运行。我想这是可以的,因为如果我有它,我可以使用Haversine距离公式。但是,如果Elasticsearch库中内置了某些内容,那么我宁愿使用它。
答案 0 :(得分:3)
转换为本机脚本,您的mvel语句如下所示:
((GeoPointDocFieldData)doc().field("field_name")).distance(lat, lon)
还可以使用getLats()
和getLons()
方法检索纬度和经度列表作为数组,并使用
GeoDistance.PLANE.calculate(lat1, lon1, lat2, lon2, unit)