2

追加すると:

fields: [ "doc['Location'].lon" ]

私のクエリでは、経度の値がドキュメント ソースに表示されているものとは異なります。

ここでは、doc['Latitude'].lon と .lat、および比較する _source.Latitude を取得したクエリの結果を確認できます。

https://gist.github.com/d9533170f1f50fd27e87 (注 - これらは PHP で json_decode を介して渡されますが、json_decode を使用する前のデータは同じです。)

これは、「doc['field_name'].distance(lat, lon)」を使用して距離をフィールドとしてクエリに追加しようとしたときに初めて気付きました。「script_fields」キーと「fields」キーの両方を試しましたが、それぞれ同じ結果になりました。

更新: "doc['Location'].lon" が doc['Location'].lat と思われるものを返していることに気付きました (lat と lon が入れ替わっています)。

4

1 に答える 1

5

問題は、GeoJSON形式を使用する場合(または配列としてlat / longを使用する場合)、lat/lngの順序をlng/latに切り替える必要があることでした。

インデックスを再構築していますが、これを回避するために、今のところこのクエリを使用しています。

doc['Location'].distance( lon + 180, lat ) // Temporary bandaid

正しい値でインデックスを再構築したら、次のように切り替えます。

doc['field_name'].distance(lat, lon) // The correct method
于 2011-11-19T19:36:37.873 に答える