在elasticsearch中查找当前位置与周围酒店之间的距离

gjmwrych  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(351)

我目前正在建立一个餐厅搜索网站。我列出了有关餐馆的数据,并使用elasticsearch为它们编制了索引。示例文件如下:

{
    "name" : "My Paris restaurant",
    "cuisines": "chinese",
    "location" : {
        "lat" : 1.10,
        "lon" : 1.54
    }
}

在这里你可以看到我列出了地理位置数据。现在我要计算用户的当前位置到列出的酒店之间的距离。如何在elasticsearch中做到这一点?

68de4m5k

68de4m5k1#

据我所知,您需要找出离当前用户位置最近的酒店。我假设您已经完成了到位置字段的地理点Map。下面的查询解释了,我们如何实现您的目标:

{
  "query": {
    "function_score": {
      "functions": [
        {
          "gauss": {
            "location": {
              "scale": "1km",
              "origin": [
                1.231,
                1.012
              ]
            }
          }
        }
      ]
    }
  }
}

这里有一个名为origin的字段,需要输入用户的当前位置。这将计算到最近的酒店的距离,然后使用“功能评分”查询根据它们的接近程度对它们进行评分。附近最近的餐馆得分较高。
或者如果你需要找到实际的距离,有一些方法我在这个博客中解释过。

相关问题