弹性搜索中地理点的奇怪行为

时间:2014-01-23 11:14:10

标签: elasticsearch geopoints

在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查询相同内容时。

有人可以帮助我吗,我在这里做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

每个查询只返回3个结果吗?还是超过10?

如果超过10,那么您的结果abc可能仍在结果集中,只是更进一步。默认情况下,Elasticsearch仅返回前10个结果。您可以尝试按geo-distance排序或调整from/size parameters

如果失败,请使用结果a上的explain API来确定未返回的原因。