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

版本: 6.8-8.9

简而言之,当提供给 Elasticsearch 的地理坐标未采用正确的数字格式时,就会发生此错误。Elasticsearch 要求地理坐标必须是数字(纬度和经度)。如果提供字符串或任何其他数据类型,它将抛出此错误。要解决此问题,请确保地理坐标采用正确的数字格式。此外,检查数据源以确保其提供正确的数据类型。如果使用脚本输入数据,请验证其在将数据发送到 Elasticsearch 之前是否正确地将字符串转换为数字。

日志上下文 #

日志"geo coordinates must be numbers"的类名是 GeoJson.java。 我们从 Elasticsearch 源代码中提取了以下内容,以供寻求深入上下文的人员参考:

     * Parse a single set of 2 or 3 coordinates
     */
    private static Point parseCoordinate(XContentParser parser) throws IOException {
        // Add support for coerce here
        if (parser.currentToken() != XContentParser.Token.VALUE_NUMBER) {
            throw new ElasticsearchParseException("geo coordinates must be numbers");
        }
        double lon = parser.doubleValue();
        if (parser.nextToken() != XContentParser.Token.VALUE_NUMBER) {
            throw new ElasticsearchParseException("geo coordinates must be numbers");
        }