- <1> 计算每个文档中 字段与指定的
lat/lon
点间的距离。 - <2> 以
公里
(km
)为单位,将距离设置到每个返回结果的sort
键中。 - <3> 使用快速但精度略差的
平面
(plane
)计算方式。
...
"hits": [
{
"_type": "restaurant",
"_id": "2",
"_score": null,
"_source": {
"name": "New Malaysia",
"location": {
"lat": 40.715,
"lon": -73.997
},
"sort": [
0.08425653647614346 <1>
]
...
- <1> 宾馆距离我们的指定位置距离是 0.084km。
- 你可以通过设置
单位
(unit
)来让返回值的形式跟你应用中想要的匹配。
提示
有可能距离只是决定返回结果排序的唯一重要因素,不过更常见的情况是距离会和其它因素,
比如全文检索匹配度,流行程度或者价格一起决定排序结果。
另外按距离排序还有个缺点就是性能:需要对每一个匹配到的文档都进行距离计算。
而 function_score
请求,在 阶段有可能只需要对前 n 个结果进行计算处理。