2017-04-07 84 views
0

這可能很簡單,但我無法實現或找出預期的查詢格式。在elasticsearch中使用多個geopoints過濾

我能夠從我的應用程序中創建geo_point數據類型的映射。我還可以通過發送下面的查詢請求主體的一部分,用來查詢與GeoPoint的指標:

{ 
    "query": { 
     "bool" : { 
      "must" : { 
       "match_all" : {} 
      }, 
      "filter" : { 
       "geo_distance" : { 
        "distance" : "5km", 
        "field_location" : "9.0194,-79.4509" 
       } 
      } 
     } 
    } 
} 

這裏,field_location是爲geo_point類型的字段的名稱。這工作非常好。

我無法找到一種方法,我可以向篩選器提供多個lat/lon值,並在它們之間使用OR。我試圖在查詢中使用SHOULD,但無法找到正確的方法。任何關於如何實現這一點的指針都會非常有幫助。

回答

0

看來我在正確的道路上。 elasticsearch的Bool query支持運營商。我只是沒有正確使用它。

下面的查詢工作:

{ 
    "query": { 
     "bool": { 
      "should": [ 
       { 
        "geo_distance": { 
         "distance": "1km", 
         "field_location": "9.0194,-79.4509" 
        } 
       }, 
       { 
        "geo_distance": { 
         "distance": "1km", 
         "field_location": "8.9972,-79.4985" 
        } 
       } 
      ] 
     } 
    } 
}