Geopoints

作者: 潘大的笔记 | 来源:发表于2019-12-24 17:43 被阅读0次

    地理坐标点

    可以用来计算两个坐标间的距离,还可以判断一个坐标是否在另一个区域中,或在聚合中。
    地理坐标点不能被动态映射(dynamic mapping)自动检测,需要显示声明geo-point
    经纬度信息可以是字符串、数组或者对象
    注意经纬度的顺序问题

    通过地理坐标点过滤

    找出落在指定矩形框中的点:geo_bounding_box
    找到与指定位置在给定距离内的点:geo_distance
    找出与指定点距离在给定最小距离和最大距离之间的点:geo_distance_range
    找出落在多边形中的点(代价很大):geo_polygon
    地理坐标过滤器使用代价昂贵。尽可能先使用其他过滤器过滤

    地理坐标盒模型过滤器

    geo_bounding_box不需要把所有坐标点都加载到内存里,只需要简单判断lat和lon坐标数据是否在给定范围内。可以用倒排索引做一个range过滤来实现目标。
    使用这种优化方式,需要把geo_point字段用lat和lon的方式分别映射到索引中。
    过滤时设置type为indexed明确告诉ES这个过滤器使用倒排索引

    地理距离过滤器

    代价昂贵,为了优化性能,ES先使用一个盒模型来排除掉尽可能多的文档
    通常使用矩形模型也能满足应用需求
    地理距离计算
    arc:最慢最精确,将地球当成球体来处理。精度受限于地体并不是完全的球体
    plane:将地球当成是平坦的来处理。在赤道附近精度最好
    sloppy_arc:精度换速度,比arc块4到5倍,精度达99.9%。默认的计算方式

    按距离排序

    当你可以按距离排序时,按距离打分通常是一个更好的解决方案。

    Geohashes

    是一种将经纬度坐标编码成字符串的方式。
    Geohashes把整个世界分为32个单元的格子,4行8列
    可以控制精度

    Geohash单元查询

    geohash_cell,将经纬度坐标根据指定精度转换成一个geohash,然后查找所有包含这个geohash的位置。

    Geo aggs

    geo_distance,地理位置距离,将文档按照距离围绕一个中心点来分组。
    geo_bounding_box,geohash网格,将文档按照geohash范围来分组,用来显示在地图上。
    地理位置边界,返回一个包含所有地理位置坐标点的边界的经纬度坐标。

    Geoshapes

    地理形状
    geo-shapes:判断查询的形状与索引的形状的关系。不能用于计算距离、排序、打分以及聚合。
    关系可以是,intersects有重叠,disjoint完全不重叠,within被包含。
    映射地理形状:需要考虑精度、距离误差
    索引地理形状
    查询地理形状,允许使用形状来做查询;在查询中使用已索引的形状

    相关文章

      网友评论

          本文标题:Geopoints

          本文链接:https://www.haomeiwen.com/subject/pehfoctx.html