Geo queriesedit

Elasticsearch supports two types of geo data: geo_point fields which support lat/lon pairs, and geo_shape fields, which support points, lines, circles, polygons, multi-polygons etc.

The queries in this group are:

geo_shape query
Find document with geo-shapes which either intersect, are contained by, or do not intersect with the specified geo-shape.
geo_bounding_box query
Finds documents with geo-points that fall into the specified rectangle.
geo_distance query
Finds document with geo-points within the specified distance of a central point.
geo_polygon query
Find documents with geo-points within the specified polygon.

GeoShape Queryedit

See Geo Shape Query

Note: the geo_shape type uses Spatial4J and JTS, both of which are optional dependencies. Consequently you must add Spatial4J and JTS to your classpath in order to use this type:



check for updates in Maven Central

check for updates in Maven Central

// Import ShapeRelation and ShapeBuilder
import org.elasticsearch.common.geo.ShapeRelation;
GeoShapeQueryBuilder qb = geoShapeQuery(
        new MultiPointBuilder(                         
                new CoordinatesBuilder()
            .coordinate(0, 0)
            .coordinate(0, 10)
            .coordinate(10, 10)
            .coordinate(10, 0)
            .coordinate(0, 0)



relation can be ShapeRelation.CONTAINS, ShapeRelation.WITHIN, ShapeRelation.INTERSECTS or ShapeRelation.DISJOINT

// Using pre-indexed shapes
GeoShapeQueryBuilder qb = geoShapeQuery(


The ID of the document that containing the pre-indexed shape.

Index type where the pre-indexed shape is.


Name of the index where the pre-indexed shape is. Defaults to shapes.

The field specified as path containing the pre-indexed shape. Defaults to shape.

Geo Bounding Box Queryedit

See Geo Bounding Box Query

    .setCorners(40.73, -74.1,                                
                40.717, -73.99);                             


bounding box top left point

bounding box bottom right point

Geo Distance Queryedit

See Geo Distance Query

    .point(40, -70)                                          
    .distance(200, DistanceUnit.KILOMETERS);                 


center point

distance from center point

Geo Polygon Queryedit

See Geo Polygon Query

List<GeoPoint> points = new ArrayList<GeoPoint>();           
points.add(new GeoPoint(40, -70));
points.add(new GeoPoint(30, -80));
points.add(new GeoPoint(20, -90));
geoPolygonQuery("pin.location", points);                     

add your polygon of points a document should fall within

initialise the query with field and points