http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3114|回复: 3

[vue.js] 45-Elasticsearch地理边界聚合

[复制链接]
发表于 2019-1-9 11:12:06 | 显示全部楼层 |阅读模式
地理边界聚合

在我们之前的例子中,我们通过一个覆盖大纽约区的边框来过滤结果。 然而,我们的结果全部都位于曼哈顿市中心。当为我们的用户显示一个地图的时候,放大包含数据的区域是有意义的;展示大量的空白空间是没有任何意义的。

geo_bounds 正好是这样的:它计算封装所有地理位置点需要的最小边界框:
[C#] 纯文本查看 复制代码
GET /attractions/restaurant/_search

{

  "size" : 0,

  "query": {

    "constant_score": {

      "filter": {

        "geo_bounding_box": {

          "location": {

            "top_left": {

              "lat":  40,8,

              "lon": -74.1

            },

            "bottom_right": {

              "lat":  40.4,

              "lon": -73.9

            }

          }

        }

      }

    }

  },

  "aggs": {

    "new_york": {

      "geohash_grid": {

        "field":     "location",

        "precision": 5

      }

    },

    "map_zoom": { 

      "geo_bounds": {

        "field":     "location"

      }

    }

  }

}



geo_bounds 聚合将计算封装所有匹配查询文档所需要的最小边界框。

响应现在包括了一个可以用来缩放地图的边界框。
[C#] 纯文本查看 复制代码
...

"aggregations": {

  "map_zoom": {

     "bounds": {

        "top_left": {

           "lat":  40.722,

           "lon": -74.011

        },

        "bottom_right": {

           "lat":  40.715,

           "lon": -73.983

        }

     }

  },

...

事实上,我们甚至可以在每一个 geohash 单元内部使用 geo_bounds 聚合, 以免一个单元内的地理位置点仅集中在单元的一部分上:
[C#] 纯文本查看 复制代码
GET /attractions/restaurant/_search

{

  "size" : 0,

  "query": {

    "constant_score": {

      "filter": {

        "geo_bounding_box": {

          "location": {

            "top_left": {

              "lat":  40,8,

              "lon": -74.1

            },

            "bottom_right": {

              "lat":  40.4,

              "lon": -73.9

            }

          }

        }

      }

    }

  },

  "aggs": {

    "new_york": {

      "geohash_grid": {

        "field":     "location",

        "precision": 5

      },

      "aggs": {

        "cell": { 

          "geo_bounds": {

            "field": "location"

          }

        }

      }

    }

  }

}



cell_bounds 子聚合会为每个 geohash 单元计算边界框。

现在在每个单元里的点有一个边界框。
[C#] 纯文本查看 复制代码
...

"aggregations": {

  "new_york": {

     "buckets": [

        {

           "key": "dr5rs",

           "doc_count": 2,

           "cell": {

              "bounds": {

                 "top_left": {

                    "lat":  40.722,

                    "lon": -73.989

                 },

                 "bottom_right": {

                    "lat":  40.719,

                    "lon": -73.983

                 }

              }

           }

        },

...




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2019-1-9 14:20:21 | 显示全部楼层
强烈支持楼主ing……
发表于 2019-1-9 14:28:04 | 显示全部楼层
强烈支持楼主ing……
发表于 2019-1-9 14:48:49 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-8 14:04

© 2014-2021

快速回复 返回顶部 返回列表