简而言之,当不使用_geo_distance排序时,是否有一种方法可以返回地理距离?
更新:为澄清起见,我希望结果按随机顺序排列并包含距离。
是的,您可以使用脚本字段。
例如,假设您的文档具有一个名为的地理位置字段location,则可以使用以下内容:
location
(请注意,\u0027只是一个转义的单引号,所以\u0027location\u0027真的是'location')
\u0027
\u0027location\u0027
'location'
curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1' -d ' { "script_fields" : { "distance" : { "params" : { "lat" : 2.27, "lon" : 50.3 }, "script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)" } } } ' # [Thu Feb 16 11:20:29 2012] Response: # { # "hits" : { # "hits" : [ # { # "_score" : 1, # "fields" : { # "distance" : 466.844095463887 # }, # "_index" : "geonames_1318324623", # "_id" : "6436641_en", # "_type" : "place" # }, ... etc
如果还希望_source返回该字段,则可以如下指定:
_source
curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1' -d ' { "fields" : [ "_source" ], "script_fields" : { "distance" : { "params" : { "lat" : 2.27, "lon" : 50.3 }, "script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)" } } } '