当我添加:
fields: [ "doc['Location'].lon" ]
对于我的查询,经度值与文档来源中显示的不同。
在这里,您可以查看查询结果,其中我提取了文档[' Latitude']。lon和.lat,以及要比较的_source.Latitude:
https://gist.github.com/d9533170f1f50fd27e87(注意 - 这些已经通过PHP中的json_decode传递,但在使用json_decode之前数据是相同的。)
当我使用" doc [' field_name']。距离(lat,lon)"时,我首先注意到了这一点。尝试将距离作为字段添加到我的查询中。我试过" script_fields"和"字段"键和每个键都有相同的结果。
更新:我注意到" doc ['位置']。lon"正在返回我认为应该是doc [' Location']。lat(lat和lon被切换。)
答案 0 :(得分:5)
问题在于,当使用GeoJSON格式(或使用lat / long作为数组)时,您必须switch the order of lat/lng to lng/lat。
我正在重建我的索引,但是,为了解决这个问题,我现在使用了这个查询:
doc['Location'].distance( lon + 180, lat ) // Temporary bandaid
一旦我使用正确的值重建索引,我将切换回:
doc['field_name'].distance(lat, lon) // The correct method