Geo-distance Query
The GeoDistance
query matches geo_point and geo_shape values within a given distance of a geopoint.
In order to use the GeoDistance
query import the following:
import zio.elasticsearch.query.GeoDistanceQuery
import zio.elasticsearch.ElasticQuery._
You can create a GeoDistance
query using the geoDistance
method with a GeoPoint
in the following manner:
val query: GeoDistanceQuery =
geoDistance(field = "location", point = GeoPoint(20.0, 20.0), distance = Distance(200, Kilometers))
You can create a type-safe GeoDistance
query using the geoDistance
method with latitude and longitude in the following manner:
val query: GeoDistanceQuery =
geoDistance(field = Document.location, point = GeoPoint(20.0, 20.0), distance = Distance(200, Kilometers))
If you want to specify the distance_type
, you can use the distanceType
method:
import zio.elasticsearch.query.DistanceType
val queryWithDistanceType: GeoDistanceQuery =
geoDistance(field = "location", point = GeoPoint(20.0, 20.0), distance = Distance(200, Kilometers))
.distanceType(value = DistanceType.Plane)
If you want to specify a query name, you can use the name
method:
val queryWithName: GeoDistanceQuery =
geoDistance(field = "location", point = GeoPoint(20.0, 20.0), distance = Distance(200, Kilometers)).name("name")
If you want to specify the validation_method
, you can use the validationMethod
method:
import zio.elasticsearch.query.ValidationMethod
val queryWithValidationMethod: GeoDistanceQuery =
geoDistance(field = "location", point = GeoPoint(20.0, 20.0), distance = Distance(200, Kilometers))
.validationMethod(value = ValidationMethod.IgnoreMalformed)
You can also specify the point as a geo-hash:
import zio.elasticsearch.query.ValidationMethod
val queryWithValidationMethod: GeoDistanceQuery =
geoDistance(field = "location", point = GeoHash("drm3btev3e86"), distance = Distance(200, Kilometers))
You can find more information about GeoDistance
query here.