【问题标题】:Weird Behaviour of Geo Point in Elastic Search弹性搜索中地理点的奇怪行为
【发布时间】:2014-01-24 21:24:49
【问题描述】:

在 GeoDistance 弹性搜索查询中,我使用“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 查询相同时,我得到了。

谁能帮帮我,我在这里做错了什么?

提前致谢。

【问题讨论】:

    标签: elasticsearch geopoints


    【解决方案1】:

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

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

    如果做不到这一点,请使用结果 a 上的 explain API 来找出它没有被返回的原因。

    【讨论】:

    • 谢谢,我真傻,不知道这一点。这就是问题所在。非常感谢:)
    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2016-08-28
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多