 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/test/java/org/elasticsearch/index/search/geo/GeoUtilsTests.java
GeoUtils.quadTreeCellSize(6),
            equalTo(Math.sqrt(Math.pow(polarDistance / 64, 2) + Math.pow(equatorialDistance / 64, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(7),
            equalTo(Math.sqrt(Math.pow(polarDistance / 128, 2) + Math.pow(equatorialDistance / 128, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(8),
            equalTo(Math.sqrt(Math.pow(polarDistance / 256, 2) + Math.pow(equatorialDistance / 256, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(9),
            equalTo(Math.sqrt(Math.pow(polarDistance / 512, 2) + Math.pow(equatorialDistance / 512, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(10),
            equalTo(Math.sqrt(Math.pow(polarDistance / 1024, 2) + Math.pow(equatorialDistance / 1024, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(11),
            equalTo(Math.sqrt(Math.pow(polarDistance / 2048, 2) + Math.pow(equatorialDistance / 2048, 2)))
        );
        assertThat(
            GeoUtils.quadTreeCellSize(12),
            equalTo(Math.sqrt(Math.pow(polarDistance / 4096, 2) + Math.pow(equatorialDistance / 4096, 2)))
        );
    }
    public void testQuadTreeLevelsForPrecision() {
        for (int i = 0; i < 100; i++) {