2015-05-23 48 views
1

我目前正在建立一个餐厅搜索网站。我列出了有关餐馆的数据并使用elasticsearch将其编入索引。示例文档如下:在elasticsearch搜索当前位置和周边酒店之间的距离

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

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

回答

1

根据我的理解,您需要找出距离当前用户位置最近的酒店。 我假设你已经完成了对位置字段的geo_point映射。因此,这里的查询解释,我们怎样才能实现你在找什么:

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

这里有一个名为起源领域,这需要被送入用户的当前位置。这将计算到最近酒店的距离,然后使用“function_score”查询根据它们的接近度对它们进行评分。最近的餐馆在附近得到更多的分数。

或者如果您需要查找实际距离,我在此blog中解释了一些方法。

相关问题