“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"
]
我应该结合高斯衰减函数和上面两个例子中的排序吗?