在GeoDistance弹性搜索查询中,我创建了一个带有“geo_point”的映射,以映射到一个索引。当我查询纬度为x,经度为y,半径为z时,我得到一些行(例如a,b,c)。当我再次查询具有相同纬度x的相同索引,经度为y,半径为(z + 100)时,我得到不同的行(例如,对于eg.d,e,f)
这怎么可能,如果某些行出现在z中,那么同样必须出现在z + 100中以及其他行(如果可用的话)?
我的映射是:
'{
"type_name": {
"properties": {
"pin": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
}’
我使用java API的查询是
GeoDistanceFilterBuilder fil = FilterBuilders
.geoDistanceFilter("pin.location")
.point(lat, lng)
.distance(radius, DistanceUnit.KILOMETERS)
.optimizeBbox("memory")
.geoDistance(GeoDistance.ARC).cache(true);
我在使用终端“curl”cmd查询相同内容时。
有人可以帮助我吗,我在这里做错了什么?
提前致谢。
答案 0 :(得分:0)
每个查询只返回3个结果吗?还是超过10?
如果超过10,那么您的结果a
,b
和c
可能仍在结果集中,只是更进一步。默认情况下,Elasticsearch仅返回前10个结果。您可以尝试按geo-distance排序或调整from/size parameters。
如果失败,请使用结果a
上的explain API来确定未返回的原因。