2016-10-13 12 views
1

私は私のelasticsearchでマッピングを次ています弾性検索2.4ジオハッシュ細胞クエリ

{ 
    "mappings": { 
    "event": { 
     "_all":  { "enabled": false }, 
     "properties": { 
     "type":  { "type": "string", "index": "not_analyzed"}, 
     "id": { "type": "string"}, 
     "location": { "type": "geo_point"} 
     } 
    } 
    } 
} 

私が何をしたいのか、単一のジオハッシュによって定義された地図区域内局在化しているすべてのレコードのクエリです。 私の例では完全に動作するgeohashセルのクエリを認識していますが、geo_pointフィールドにgeohash_prefixオプションをtrueに設定する必要があります。これはelasticicearch 2.4では非推奨です。

最新のelasticsearch版で正しい方法は何ですか?ドキュメントのどこにも見つからない。

答えて

1

Elasticsearch 6.0.0-アルファ2 documentation says

geohash_cellクエリが削除されました。代わりに、ジオバウンディングボックスクエリ

を使用your_geohash_prefix + '00...0'your_geohash_prefix + 'zz...z'などtop_rightとしてbottom_leftbounding box引数を指定してください。ジオハッシュ接頭辞には、0zの記号を追加して、長さ12(最大精度のハハハシ長さ)にする必要があります。

など。

{ 
    "query": { 
     "bool" : { 
      "must" : { 
       "match_all" : {} 
      }, 
      "filter" : { 
       "geo_bounding_box" : { 
        "coordinates" : { 
         "bottom_left" : "dr5r90000000", 
         "top_right" : "dr5r9zzzzzzz" 
        } 
       } 
      } 
     } 
    } 
} 

0それぞれジオハッシュグリッドの左下と右上の角にとるz:ジオハッシュプレフィックスdr5r9のために、それは次のようになります。

このアプローチでは、一致するドキュメント数を、対応する精度のgeohashグリッド集計結果と比較することによってテストすることに成功しました。しかし、私はまだいくつかの点がそのようなバウンディングボックスに落ちていないいくつかのケースを持っていた。それが100%正しい方法であるとは言えません。