Elasticsearch - geo_point 阵列上 运行 distanceInKm 上的 MissingMethodException
Elasticsearch - MissingMethodException on running distanceInKm on geo_point array
我有一个包含 geo_points 数组的 elasticsearch 文档。我将映射创建为:
{
"test": {
"properties": {
"locations": {
"type": "geo_point"
}
}
}
}
现在,我正在尝试创建一个查询,我想在其中对 geo_points 的数组进行一些处理。我创建了这样的查询:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "sDistance = doc['locations'].values[0].distanceInKm(28.51818,77.096080);"
}
}
}
}
}
我想计算点 (28.51818,77.096080) 与位置数组中第一个元素的距离。
它给我这个错误:
GroovyScriptExecutionException[MissingMethodException[没有方法签名:org.elasticsearch.common.geo.GeoPoint.distanceInKm() 适用于参数类型:(java.lang.Double, java.lang.Double) 值:[28.51818, 77.09608]]
我尝试使用 sDistance = doc['locations'][0].distanceInKm(28.51818,77.096080);
但它也导致了同样的错误。
我做错了什么?
提前致谢。
您的脚本不应自行检索第一个地理点,而应直接在 locations
字段上调用 distanceInKm
,如下所示:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "sDistance = doc['locations'].distanceInKm(28.51818,77.096080);"
}
}
}
}
}
在引擎盖下,first geo point will be retrieved and the distance will be computed on it。
我有一个包含 geo_points 数组的 elasticsearch 文档。我将映射创建为:
{
"test": {
"properties": {
"locations": {
"type": "geo_point"
}
}
}
}
现在,我正在尝试创建一个查询,我想在其中对 geo_points 的数组进行一些处理。我创建了这样的查询:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "sDistance = doc['locations'].values[0].distanceInKm(28.51818,77.096080);"
}
}
}
}
}
我想计算点 (28.51818,77.096080) 与位置数组中第一个元素的距离。
它给我这个错误:
GroovyScriptExecutionException[MissingMethodException[没有方法签名:org.elasticsearch.common.geo.GeoPoint.distanceInKm() 适用于参数类型:(java.lang.Double, java.lang.Double) 值:[28.51818, 77.09608]]
我尝试使用 sDistance = doc['locations'][0].distanceInKm(28.51818,77.096080);
但它也导致了同样的错误。
我做错了什么?
提前致谢。
您的脚本不应自行检索第一个地理点,而应直接在 locations
字段上调用 distanceInKm
,如下所示:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "sDistance = doc['locations'].distanceInKm(28.51818,77.096080);"
}
}
}
}
}
在引擎盖下,first geo point will be retrieved and the distance will be computed on it。