设为首页 加入收藏

TOP

[Elastic Search]空间搜索(二)
2015-11-21 01:51:07 来源: 作者: 【 】 浏览:0
Tags:Elastic Search 空间 搜索

通过一段时间的空间搜索的学习,其实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 获得包含所有查询文档的最小矩形的左上和右下的坐标

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇rac_生产库日志组损坏处理 下一篇Error Code:1360-Trigger does no..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: