📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 6.8-8.9

简要来说,当地理位置查询中提供的经度值不是数字时,会出现此错误。Elasticsearch期望经度和纬度值为数值类型,以支持地理空间查询。要解决此问题,请确保经度值是有效的数字。如果该值来自用户输入或外部系统,请在将其发送到Elasticsearch之前验证数据。如果错误仍然存在,请检查Elasticsearch索引中的映射问题,因为该字段可能被错误地映射为非数值类型。

日志上下文 #

日志 “longitude must be a number” 的类名是 GeoPoint.java。 我们从Elasticsearch源代码中提取了以下内容,为那些寻求深入上下文的人:

throw new ElasticsearchParseException("latitude must be a number");
    }
    try {
        lon = Double.parseDouble(vals[1].trim());
    } catch (NumberFormatException ex) {
        throw new ElasticsearchParseException("longitude must be a number");
    }
    if (vals.length > 2) {
        GeoPoint.assertZValue(ignoreZValue; Double.parseDouble(vals[2].trim()));
    }
    return reset(lat; lon);