【问题标题】:Elasticsearch geohash_grid returns 1 doc count but query returns a lotElasticsearch geohash_grid 返回 1 个文档计数,但查询返回很多
【发布时间】:2017-05-27 04:01:17
【问题描述】:

我正在使用带有 geohash_grid 查询的 Elasticsearch 5.1,如下所示:

{
  "query": {
    ...
    "geo_bounding_box":...
  },
  "aggs": {
    "lochash": {
      "geohash_grid": {
        "field": "currentShopGeo",
        "precision": 5
      }
    }
  }
}

这是elasticsearch的结果:

{
  ....,
  "aggregations": {
    "lochash": {
      "buckets": [
        {
          "key": "w3gvv",
          "doc_count": 1  // only 1 doc_count
        }
      ]
    }
  }
}

然后,我使用“w3gvv”来解码geohash,并在“w3gvv”之后有一个如下边界框。

{
  "top_left": {
    "lat": 10.8984375,
    "lon": 106.7431640625
  },
  "bottom_right": {
    "lat": 10.8544921875,
    "lon": 106.787109375
  }
}

但是,当我使用上面返回的边界框搜索里面的文档时,Elasticsearch 似乎又返回了 13 个项目。有谁知道为什么这么奇怪?

【问题讨论】:

  • 能否在顶部显示查询,特别是geo_bounding_box
  • { "query": { "bool": { "should": [ { "geo_bounding_box": { "type": "indexed", "currentShopGeo": { "top_left": { "lat": 10.8651173923467, "lon": 106.591202952246 }, "bottom_right": { "lat": 10.7605769974159, "lon": 106.791360117773 } } } } ] } }, "aggs": { ... } } => { "key": "w3gvv", "doc_count": 1}

标签: elasticsearch geohashing


【解决方案1】:

找到了解决办法, 我们可以使用 geo_bounds 来了解 Elasticsearch 返回的集群的确切边界,如下所示:

"aggs": {
  "lochash": {
    "geohash_grid": {
      "field": "currentShopGeo",
      "precision": 5
    },
    "aggs": {
      "cell": {
        "geo_bounds": {
          "field": "currentShopGeo"
        }
      }
    }
  }
}

结果应该是:

{
   "key": "w3gvv",
   "doc_count": 1,
   "cell": {
     "bounds": {
       "top_left": {
          "lat": 10.860191588290036,
          "lon": 106.75263083539903
       },
       "bottom_right": {
          "lat": 10.860191588290036,
          "lon": 106.75263083539903
       }
     }
  }
 }

结果似乎准确地显示了该项目的位置。

【讨论】:

  • 如果此解决方案对您有用,请将其标记为答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多