• <1> 计算每个文档中 字段与指定的 lat/lon 点间的距离。
    • <2> 以 公里km)为单位,将距离设置到每个返回结果的 sort 键中。
    • <3> 使用快速但精度略差的平面plane)计算方式。
    1. ...
    2. "hits": [
    3. {
    4. "_type": "restaurant",
    5. "_id": "2",
    6. "_score": null,
    7. "_source": {
    8. "name": "New Malaysia",
    9. "location": {
    10. "lat": 40.715,
    11. "lon": -73.997
    12. },
    13. "sort": [
    14. 0.08425653647614346 <1>
    15. ]
    16. ...
    • <1> 宾馆距离我们的指定位置距离是 0.084km。
    • 你可以通过设置单位unit)来让返回值的形式跟你应用中想要的匹配。

    提示

    有可能距离只是决定返回结果排序的唯一重要因素,不过更常见的情况是距离会和其它因素,
    比如全文检索匹配度,流行程度或者价格一起决定排序结果。

    另外按距离排序还有个缺点就是性能:需要对每一个匹配到的文档都进行距离计算。
    function_score请求,在 阶段有可能只需要对前 n 个结果进行计算处理。