12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- [[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]
- -----------------------------------------------
- <dependency>
- <groupId>org.locationtech.spatial4j</groupId>
- <artifactId>spatial4j</artifactId>
- <version>0.6</version> <1>
- </dependency>
- <dependency>
- <groupId>com.vividsolutions</groupId>
- <artifactId>jts</artifactId>
- <version>1.13</version> <2>
- <exclusions>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- -----------------------------------------------
- <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]
- --------------------------------------------------
- GeoShapeQueryBuilder qb = geoShapeQuery(
- "pin.location", <1>
- ShapeBuilder.newMultiPoint() <2>
- .point(0, 0)
- .point(0, 10)
- .point(10, 10)
- .point(10, 0)
- .point(0, 0));
- qb.relation(ShapeRelation.WITHIN); <3>
- --------------------------------------------------
- <1> field
- <2> shape
- <3> relation can be `ShapeRelation.WITHIN`, `ShapeRelation.INTERSECTS` or `ShapeRelation.DISJOINT`
- [source,java]
- --------------------------------------------------
- // Using pre-indexed shapes
- GeoShapeQueryBuilder qb = geoShapeQuery(
- "pin.location", <1>
- "DEU", <2>
- "countries"); <3>
- qb.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'.
|