我有一个 django 项目,它使用 elasticsearch 6.5.3 为商店中的产品建立索引,并将位置作为 GeoPoints。我正在尝试查询该索引并计算任意点之间的距离,例如用户到每个结果的位置。
我正在使用elasticsearch_dsl,我的代码如下所示:
search_query = search_query.script_fields(distance={
'script':{
'inline':"doc['location'].arcDistance(params.lat, params.lon)",
'params': {
'lat':user_loc.lat,
'lon':user_loc.lon
}
}
})
for result in search_query.execute():
print(result.distance)
这给了我看起来像这样的值:
[123456.456879123]
但我不确定它的单位。 通过使用 https://www.nhc.noaa.gov/gccalc.shtml 中的在线距离计算器, 这给我的距离约为 123 公里, 看起来值的单位是米。
所以:
<强>1。我在哪里可以找到有关其单位的明确答案?
请指出这些方法的相关文档。 我也有兴趣知道是否有一种方法可以指定方法调用中结果的预期单位。
<强>2。在 python 中是否有更好的方法来做到这一点?
最佳答案
单位是由在脚本中提供值的 arcDistance
方法返回的单位。
The arc distance (in meters) of this geo point field from the provided lat/lon
无痛文档还有很多不足之处(6.5 中似乎没有关于此方法的文档)。上面的引用是从这里获得的:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/modules-scripting.html
此外,他们还提到 arcDistance
在这里计算米:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/breaking_50_scripting.html
关于elasticsearch - 用于获取从任意点到地理点的距离的elasticsearch查询的单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53975482/