Elasticsearch中[GeoDistanceSort]的非法纬度值

时间:2018-02-05 13:43:50

标签: php elasticsearch elastica

使用elasticsearch进行地理距离排序时遇到问题,在尝试定义位置引脚时会返回错误。使用Elastica PHP客户端。

$base->addSort([
    '_geo_distance' => [
        'location' => $location,
        'order' => 'asc',
        'unit' => 'm'
    ]
]);

错误是;

  

[GeoDistanceSort]的非法纬度值[269.58378318697214] [原因:所有分片都失败]

这表明纬度的值> 180,但该值仅为51.561965753874624,经度为-0.38245278430174103(从谷歌地图中检索)。

在输入排序功能之前,我已经检查了值仍然如上所述。

1 个答案:

答案 0 :(得分:1)

我发现问题是弹性搜索不喜欢地图位置的精确程度!

我实现了以下操作来将值四舍五入到小数点后6位,并且它有效。

foreach ($mapcentre as $deg) {
    $location[] = round($deg, 6);
}