[[java-query-dsl-geo-shape-query]] ==== GeoShape Query See {ref}/query-dsl-geo-shape-query.html[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: [source,xml] ----------------------------------------------- org.locationtech.spatial4j spatial4j 0.6 <1> com.vividsolutions jts 1.13 <2> xerces xercesImpl ----------------------------------------------- <1> check for updates in http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.locationtech.spatial4j%22%20AND%20a%3A%22spatial4j%22[Maven Central] <2> check for updates in http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.vividsolutions%22%20AND%20a%3A%22jts%22[Maven Central] [source,java] -------------------------------------------------- // Import ShapeRelation and ShapeBuilder import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.geo.builders.ShapeBuilder; -------------------------------------------------- [source,java] -------------------------------------------------- List points = new ArrayList<>(); points.add(new Coordinate(0, 0)); points.add(new Coordinate(0, 10)); points.add(new Coordinate(10, 10)); points.add(new Coordinate(10, 0)); points.add(new Coordinate(0, 0)); QueryBuilder qb = geoShapeQuery( "pin.location", <1> ShapeBuilders.newMultiPoint(points) <2> .relation(ShapeRelation.WITHIN); <3> -------------------------------------------------- <1> field <2> shape <3> relation can be `ShapeRelation.CONTAINS`, `ShapeRelation.WITHIN`, `ShapeRelation.INTERSECTS` or `ShapeRelation.DISJOINT` [source,java] -------------------------------------------------- // Using pre-indexed shapes QueryBuilder qb = geoShapeQuery( "pin.location", <1> "DEU", <2> "countries") <3> .relation(ShapeRelation.WITHIN)) <4> .indexedShapeIndex("shapes") <5> .indexedShapePath("location"); <6> -------------------------------------------------- <1> field <2> The ID of the document that containing the pre-indexed shape. <3> Index type where the pre-indexed shape is. <4> relation <5> Name of the index where the pre-indexed shape is. Defaults to 'shapes'. <6> The field specified as path containing the pre-indexed shape. Defaults to 'shape'.