 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
numberFormatException = e;
                                    }
                                    break;
                                default:
                                    throw new ElasticsearchParseException("latitude must be a number");
                            }
                        } else if (LONGITUDE.equals(field)) {
                            subParser.nextToken();
                            switch (subParser.currentToken()) {
                                case VALUE_NUMBER:
                                case VALUE_STRING:
                                    try {
                                        lon = subParser.doubleValue(true);
                                    } catch (NumberFormatException e) {
                                        numberFormatException = e;
                                    }
                                    break;
                                default:
                                    throw new ElasticsearchParseException("longitude must be a number");
                            }
                        } else if (GEOHASH.equals(field)) {
                            if (subParser.nextToken() == Token.VALUE_STRING) {
                                geohash = subParser.text();
                            } else {
                                throw new ElasticsearchParseException("geohash must be a string");
                            }
                        } else {
                            throw new ElasticsearchParseException("field must be either [{}], [{}] or [{}]", LATITUDE, LONGITUDE, GEOHASH);
                        }
                    } else {