Elasticsearch geohash_grid returns 1 个文档计数但查询 returns 很多
Elasticsearch geohash_grid returns 1 doc count but query returns a lot
我将 Elasticsearch 5.1 与 geohash_grid 查询一起使用,如下所示:
{
"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 returns 似乎多了 13 项。有人知道为什么这么奇怪吗?
找到解决方案,
我们可以使用 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
}
}
}
}
结果似乎准确显示了项目所在的位置。
我将 Elasticsearch 5.1 与 geohash_grid 查询一起使用,如下所示:
{
"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 returns 似乎多了 13 项。有人知道为什么这么奇怪吗?
找到解决方案, 我们可以使用 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
}
}
}
}
结果似乎准确显示了项目所在的位置。