5

私は地理オブジェクトのelasticsearchデータベースを持っています。カスタム距離でいくつかの周りの最も近いオブジェクトを検索し、geo_pointそれらをGoogleマップに表示したい。デフォルトのelasticsearchフィルターを使用-geo_distanceフィルター、正常に動作しますが、問題は、返されたピンが円形の範囲ではなく楕円形の範囲にあることです(通常、X km RADIUSで何かを検索するときのように)スクリーンショットが理解に役立つかもしれません.

どこに問題があるのか​​ わかりません。Googleマップは、エラスティックが返す結果のみを取得します-表示するピンのセット

この問題について何か知っている人はいますか?

フィルタリングなしのマップ

フィルタリングされたマップ、赤い円は実際の検索境界を示しています

4

2 に答える 2

11

ジオポイントがelasticsearchで配列として表される場合、それらはGeoJSON形式に従っています[lon, lat]. したがって、elasticsearch の観点から見ると、センター ピンはパリではなく、ソマリア沖にあります。

于 2012-06-14T17:22:40.763 に答える
3

あなたのスクリーンショットに基づいて、私はあなたのサークルにいくつかのポイントを思いつきました.

lat:48.853647、lon:2.347894 の中心座標と、lat:48.853647 lon:2.32 のポイント (同じ緯度でさらに西にあるポイント) があると仮定します。

distance_type:plane を使用すると計算される距離は ~ 3.1 km ですが、distance_type:arc を使用すると距離は ~ 2 km です。

別のポイント lat:48.8717 lon:2.347894 (中心点のさらに北、ただし若干の経度) を使用すると、distance_type:plane を使用すると距離は ~ 2 km になり、distance_type:arc を使用すると距離も ~ 2 km になります。

したがって、フィルタリングされた距離が 2.5 km の場合、distance_type:arc を使用すると両方のポイントが正しく含まれますが、distance_type:plane を使用すると北の点のみが含まれ、楕円形になります。

于 2012-06-14T12:25:56.993 に答える