 geo_point field does not support GeoJson which can be a PITA if your data is in such a format. Indexing it as a geo_shape is an option but very wasteful.
server/src/main/java/org/elasticsearch/common/geo/GeoUtils.java
throw new ElasticsearchParseException("token [{}] not allowed", subParser.currentToken());
                    }
                }
            }
            if (geohash != null) {
                if (Double.isNaN(lat) == false || Double.isNaN(lon) == false) {
                    throw new ElasticsearchParseException("field must be either lat/lon or geohash");
                } else {
                    return point.parseGeoHash(geohash, effectivePoint);
                }
            } else if (numberFormatException != null) {
                throw new ElasticsearchParseException(
                    "[{}] and [{}] must be valid double values",
                    numberFormatException,
                    LATITUDE,
                    LONGITUDE
                );
            } else if (Double.isNaN(lat)) {
                throw new ElasticsearchParseException("field [{}] missing", LATITUDE);
            } else if (Double.isNaN(lon)) {
                throw new ElasticsearchParseException("field [{}] missing", LONGITUDE);
            } else {
                return point.reset(lat, lon);
            }
        } else if (parser.currentToken() == Token.START_ARRAY) {
            try (XContentSubParser subParser = new XContentSubParser(parser)) {
                int element = 0;
                while (subParser.nextToken() != Token.END_ARRAY) {
                    if (subParser.currentToken() == Token.VALUE_NUMBER) {
                        element++;