0

在 GeoDistance Elastic Search Query 中,我使用“geo_point”创建了一个映射以映射到一个索引。当我以纬度为 x 、经度为 y 、半径为 z 进行查询时,我得到了一些行(例如 a、b、c)。当我再次查询与 x 相同的纬度、y 的经度和 (z+100) 的半径的同一索引时,我得到不同的行(例如 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 查询相同时,我得到了。

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

提前致谢。

4

1 回答 1

0

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

如果超过 10,那么您的结果ab并且c可能仍在结果集中,只是进一步下降。Elasticsearch 默认只返回前 10 个结果。您可以尝试按地理距离排序或调整from/size 参数

如果做不到这一点,请在 result 上使用解释 APIa来找出它没有被返回的原因。

于 2014-01-24T13:24:49.217 回答