[ElasticSearch] 空间搜索 (二)

通过一段时间的空间搜索的学习,其实ES对于空间对象最强大之处就在于其计算能力以及计算速度,能够快速的返回你想要的结果。但在使用过程中也发现一些问题。比如说聚合时,必须保证同一个index下的所有type中不能包含相同的字段名而拥有不同的字段类型。目前还不知原因,猜测聚合是直接查找index中包含的所有字段进行统计的。

得意知道的话也可以留言评论哦!

空间搜索在聚合中的使用

直接上代码:

1.geo_distance

 "aggs": {
    "aggs_geopoint": {
      "geo_distance": {
        "field": "location",
        "origin": {
          "lat": 51.5072222,
          "lon": -0.1275
        },  
        "unit": "km",
        "ranges": [
          {
            "to": 300
          },
          {
            "from": 300,
            "to": 2000
          },
          {
            "from": 2000
          }
        ]
      }
主要作用对一定区域范围内的空间对象进行统计。 上图说话:

2.geohash_grid

 "aggs": {
    "new_york": {
      "geohash_grid": { 
        "field":     "location",
        "precision": 5
      }
    }
  }
geohash将一个二维的坐标转化为一个简单的可排序可比较的字符串.通过一个字符串来代替一个平面。 本博客转载了关于geohash的介绍。

分割成网格,每个网格就是一个bulket,每个桶再进行统计

3.geo_bounds

 "aggs": {
    "map_zoom": { 
      "geo_bounds": {
        "field":     "location"
      }
    }
  }
该geo_bounds聚集将计算封装所有匹配我们查询的文件所需要的最小边界框。所以通常会与geohash聚合一起使用,作为geohash聚合内的聚合,如下:

"aggs": {
    "new_york": {
      "geohash_grid": {
        "field":     "location",
        "precision": 5
      }
    },
    "map_zoom": { 
      "geo_bounds": {
        "field":     "location"
      }
    }
  }
geo_bounds subaggregation计算用于每geohash形成的单元格。

 
geo_bounds 获得包含所有查询文档的最小矩形的左上和右下的坐标



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值