2015-05-23 77 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中解釋了一些方法。

相關問題