elasticsearch,Geolocation,Geospatial,elasticsearch" /> elasticsearch,Geolocation,Geospatial,elasticsearch" />

Geolocation ElasticSearch脚本字段返回不正确的经度值

Geolocation ElasticSearch脚本字段返回不正确的经度值,geolocation,geospatial,elasticsearch,Geolocation,Geospatial,elasticsearch,当我加上: fields: [ "doc['Location'].lon" ] 对于我的查询,经度值与文档源中显示的值不同 在这里,您可以看到我获取doc['Latitude'].lon和.lat以及要比较的_source.Latitude的查询结果: (注意——这些都是通过PHP中的json_解码传递的,但在使用json_解码之前,数据是相同的。) 当我使用“doc['field_name'].distance(lat,lon)”尝试将距离作为字段添加到查询中时,我第一次注意到了这一点。我尝

当我加上:

fields: [ "doc['Location'].lon" ]
对于我的查询,经度值与文档源中显示的值不同

在这里,您可以看到我获取doc['Latitude'].lon和.lat以及要比较的_source.Latitude的查询结果:

(注意——这些都是通过PHP中的json_解码传递的,但在使用json_解码之前,数据是相同的。)

当我使用“doc['field_name'].distance(lat,lon)”尝试将距离作为字段添加到查询中时,我第一次注意到了这一点。我尝试了“script_fields”和“fields”键,结果都是一样的


更新:我注意到“doc['Location'].lon”正在返回我认为应该是doc['Location'].lat的内容(lat和lon是切换的)。

问题是,当使用GeoJSON格式(或使用lat/long作为数组)时,您必须

我正在重建我的索引,但为了解决这个问题,我现在使用了这个查询:

doc['Location'].distance( lon + 180, lat ) // Temporary bandaid
使用正确的值重建索引后,我将切换回:

doc['field_name'].distance(lat, lon) // The correct method

David,是的,不幸的是,在处理空间数据时,这是一个常见的问题。x、 y!=y、 在美国,很多人经常把x和纬度联系起来。