当我添加:
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切换了)。
最佳答案
问题是,当使用GeoJSON格式(或使用经/纬度作为数组)时,您必须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
关于geolocation - ElasticSearch脚本字段返回不正确的经度值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8196344/