Elasticsearch 中 [GeoDistanceSort] 的非法纬度值
illegal latitude value for [GeoDistanceSort] in Elasticsearch
使用 elasticsearch 进行地理距离排序时出现问题,在尝试定义位置 pin 时返回错误。使用 Elastica PHP 客户端。
$base->addSort([
'_geo_distance' => [
'location' => $location,
'order' => 'asc',
'unit' => 'm'
]
]);
错误是;
illegal latitude value [269.58378318697214] for [GeoDistanceSort] [reason: all shards failed]
这表明纬度值 >180,但该值仅为 51.561965753874624,经度为 -0.38245278430174103(从 google 地图中检索)。
在输入排序函数之前,我已经检查过这些值仍然如上。
我发现问题在于 elasticsearch 不喜欢地图位置的精确度!
我实施了以下操作将值四舍五入到小数点后 6 位,效果很好。
foreach ($mapcentre as $deg) {
$location[] = round($deg, 6);
}
使用 elasticsearch 进行地理距离排序时出现问题,在尝试定义位置 pin 时返回错误。使用 Elastica PHP 客户端。
$base->addSort([
'_geo_distance' => [
'location' => $location,
'order' => 'asc',
'unit' => 'm'
]
]);
错误是;
illegal latitude value [269.58378318697214] for [GeoDistanceSort] [reason: all shards failed]
这表明纬度值 >180,但该值仅为 51.561965753874624,经度为 -0.38245278430174103(从 google 地图中检索)。
在输入排序函数之前,我已经检查过这些值仍然如上。
我发现问题在于 elasticsearch 不喜欢地图位置的精确度!
我实施了以下操作将值四舍五入到小数点后 6 位,效果很好。
foreach ($mapcentre as $deg) {
$location[] = round($deg, 6);
}