2017-05-27 55 views
0

我使用Elasticsearch 5.1如下geohash_grid查詢:Elasticsearch geohash_grid返回1個DOC計數,但查詢返回了很多

{ 
    "query": { 
    ... 
    "geo_bounding_box":... 
    }, 
    "aggs": { 
    "lochash": { 
     "geohash_grid": { 
     "field": "currentShopGeo", 
     "precision": 5 
     } 
    } 
    } 
} 

這裏是elasticsearch的結果:

{ 
    ...., 
    "aggregations": { 
    "lochash": { 
     "buckets": [ 
     { 
      "key": "w3gvv", 
      "doc_count": 1 // only 1 doc_count 
     } 
     ] 
    } 
    } 
} 

然後,我使用「w3gvv」解碼geohash,並在「w3gvv」後面有一個邊界框。

{ 
    "top_left": { 
    "lat": 10.8984375, 
    "lon": 106.7431640625 
    }, 
    "bottom_right": { 
    "lat": 10.8544921875, 
    "lon": 106.787109375 
    } 
} 

但是,當我使用上面返回的邊界框來搜索裏面的文檔時,看起來Elasticsearch會返回更多13個項目。任何人都知道爲什麼它很奇怪?

+0

你還可以在頂部顯示查詢,特別是'geo_bounding_box'嗎? – Val

+0

'{ 「查詢」:{ 「布爾」:{ 「應該」:[ { 「geo_bounding_box」:{ 「類型」: 「索引」, 「currentShopGeo」:{ 「TOP_LEFT」:{ 「LAT」:10.8651173923467, 「LON」:106.591202952246 }, 「BOTTOM_RIGHT」:{ 「LAT」:10.7605769974159, 「LON」:106.791360117773 } } } } ] } }, 「aggs」:{ ... } }'=> {「key」:「w3gvv」,「doc_count」:1} –

回答

0

得到了一個解決方案, 我們可以使用geo_bounds知道被Elasticsearch如下返回集羣的確切邊界:

"aggs": { 
    "lochash": { 
    "geohash_grid": { 
     "field": "currentShopGeo", 
     "precision": 5 
    }, 
    "aggs": { 
     "cell": { 
     "geo_bounds": { 
      "field": "currentShopGeo" 
     } 
     } 
    } 
    } 
} 

結果應該是:

{ 
    "key": "w3gvv", 
    "doc_count": 1, 
    "cell": { 
    "bounds": { 
     "top_left": { 
      "lat": 10.860191588290036, 
      "lon": 106.75263083539903 
     }, 
     "bottom_right": { 
      "lat": 10.860191588290036, 
      "lon": 106.75263083539903 
     } 
    } 
    } 
} 

看樣子結果顯示項目的確切位置。