Elasticsearch - 按地理距离排序,高斯衰减函数

时间:2017-06-21 14:32:02

标签: sorting elasticsearch distance geo

“location”是我已正确映射的geo_point字段。 我应该明确告诉elasticsearch按距离排序吗? 回复显示所有文档的得分均为“1”。

如果有包含geo_point的文档(在我的示例中为“location”字段) 这是空的:lat lon 0.0000 0.0000 - 这会制动所有分数吗? 这是在文档(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html

  

地理距离排序不支持可配置的缺失值:当文档没有用于距离计算的字段值时,距离将始终被视为等于无穷大。

我应该这样理解:“当 SINGLE 文档没有字段值时,距离总是被认为等于无限对于所有结果。因此,一个包含错误数据的文档会使整个搜索结果无效???

GET users/users/_search
{
  "explain": true, 
   "query": {
     "function_score": {
       "gauss": {
         "location": {
           "origin": [-34.60368, -58.38156],
           "scale": "5km",
           "offset": "2km"
         }
       }
     }
   }
}

另一次尝试:

{
  "explain": true,
  "sort": [
    {
      "_geo_distance": {
        "location": {
          "lat": -34.60368,
          "lon": -58.38156
        },
        "order": "desc"
      }
    }
  ]
}

响应将排序解释为无限: 并且所有分数都是“空”:

    "total": 1643,
    "max_score": null,
"sort": [
          "Infinity"
        ]


我应该结合高斯衰减函数和上面两个例子中的排序吗?

0 个答案:

没有答案