相关疑难解决方法(0)

计算elasticsearch中的地理距离

我在我的查询中使用带轮胎geo_distance过滤器,它工作正常:

search.filter :geo_distance, :distance => "#{request.distance}km", :location => "#{request.lat},#{request.lng}"
Run Code Online (Sandbox Code Playgroud)

我希望结果会以某种方式包含我用于过滤器的地理位置的计算距离.

有没有办法告诉elasticsearch在响应中包含它,以便我不必为每个结果在ruby中计算它?

==更新==

我在谷歌小组中找到了答案:

search.sort do
  by "_geo_distance", "location" => "#{request.lat},#{request.lng}", "unit" => "km" if request.with_location?
end
Run Code Online (Sandbox Code Playgroud)

按原样排序_geo_distance会产生原始结果中的距离.

ruby geolocation elasticsearch

7
推荐指数
1
解决办法
4521
查看次数

ElasticSearch distanceInKm返回错误的距离

我已经实现了一个脚本字段,返回像这里的距离在elasticsearch结果中返回距离?

红宝石:

{
  script_fields: {
    distance: {
      script: "doc['#{source_field}'].distanceInKm(#{lat}, #{lng})"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是返回的距离不正确.如果该点接近,则距离更正确,但随着距离越来越远,它变得越来越不正确.

似乎无法弄清楚我做错了什么.

elasticsearch

3
推荐指数
1
解决办法
834
查看次数

弹性搜索5.x中地理距离查询中的返回距离

我需要使用地理距离查询在弹性搜索中从搜索到的坐标获取距离。我试过了

curl -XGET 'http://127.0.0.1:9200/branch-master/master/_search?pretty=1'  -d '
{
   "script_fields" : {
      "distance" : {
         "params" : {
            "lat" : 18.00,
            "lon" : 72.00
         },
         "script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)"
      }
   }
}
'
Run Code Online (Sandbox Code Playgroud)

这是从Elasticsearch结果中的返回距离获得的

但这给了我错误“ [params]中start_object的未知键”。我不明白这是什么。上面的解决方案似乎是针对较旧版本的ES的。我正在使用ES 5.1。在手册中,我找不到地理距离查询的相关解决方案。有人可以帮我吗?

distance geolocation elasticsearch

3
推荐指数
1
解决办法
1131
查看次数

Elasticsearch无法使用lang groovy运行内联脚本[doc ....]

我在尝试匹配索引中的所有内容时出现此错误,并显示给定geo_point与查询结果之间的距离,我正在使用DrTech的答案来显示脚本:

这是我的DSL查询:

{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "distance": {
      "lang": "groovy",
      "params": {
        "lat": 2.27,
        "lon": 50.3
      },
      "script": "doc['geo_coordinates'].distanceInKm(lat,lon)"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

查询响应:

{
  "took": 50,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 4,
    "failed": 1,
    "failures": [
      {
        "shard": 0,
        "index": "users",
        "node": "pa76fjdWQl2YAHmgCT4oKw",
        "reason": {
          "type": "script_exception",
          "reason": "failed to run inline script [doc['geo_coordinates'].distanceInKm(lat,lon)] using lang [groovy]",
          "caused_by": {
            "type": "null_pointer_exception",
            "reason": null
          }
        }
      }
    ]
  },
  "hits": {
    "total": 184, …
Run Code Online (Sandbox Code Playgroud)

groovy elasticsearch

1
推荐指数
1
解决办法
2518
查看次数

标签 统计

elasticsearch ×4

geolocation ×2

distance ×1

groovy ×1

ruby ×1