查看“ElasticSearch GEO:GEO基本概念”的源代码
←
ElasticSearch GEO:GEO基本概念
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:ElasticSearch]] == 关于 == 地理信息检索是 Elasticsearch 的重要特性之一,ES '''geo''' 主要用于地理信息的存储和搜索。 在实际应用场景中,凡是涉及线下业务、O2O业务多少都会遇到地理信息搜索需求,例如:搜索附近的KTV、搜索附近的餐馆并且按距离排序、地理围栏技术。 ES中涉及地理信息存储的核心概念有两个: # '''坐标点''' # '''地理形状''' 地理信息搜索主要从数学几何角度去处理,主要有下面几种方式: # '''按坐标点之间的距离搜索'''; # '''坐标点和几何图形之间的包含关系''';例如:在地图上画一个圈圈,把包含在这个圈圈内的坐标点找出来。 # '''几何图形之间的关系'''(包含、交集);例如:在地图上面两个多边形图形交集部分。 == 坐标点('''geo_point''') == ES 中最常用的地理信息存储方式,通过坐标点表示一个地理位置,通常指的就是'''经度'''和'''维度'''。 : 例如:一家餐馆的经纬度、外卖小哥当前的经纬度、消费者家庭地址的经纬度。 经纬度在地图上就是一个点(point),ES通过 '''geo_point''' 类型存储经纬度。 == 基于坐标点的搜索 == 我们在业务系统中将相关的经纬度(坐标点)数据存储下来后,就需要对这些坐标点进行搜索。 ES中根据坐标点搜索的方式如下: # '''geo_bounding_box''':在地图上画一个'''矩形''',凡是被矩形包含的坐标点,对应的文档都会搜索出来。 # '''geo_distance''':给出一个'''坐标点和距离''',搜索出这个距离范围内的相关文档。 # '''geo_polygon''':在地图上画一个'''多边形''',凡是被这个图形包含的坐标点,对应的文档都会被搜索出来。 == 地理形状('''geo_shape''') == <pre> 有时候,单纯使用经纬度表达地理信息是不够的,例如:一所大学,占地几千平方米,如果仅使用经纬度这种坐标点表示学校的位置,既不够准确,也无法满足所有业务需求,在地图上一个大学的范围通常都是不规则的多边形,能够代表学校的坐标点有成千上万个,到底使用哪个坐标点代表学校? 我们先看下面业务场景: 当学生进入大学校园,才可以登录校园网,校外不允许登录。 当客户进入商场的时候,就给是会员的客户发短信,推送优惠券。 共享单车,只能在指定的区域停车,否则罚款。 上面业务场景涉及一个关键问题,我们如何在地图上标识一个区域,这个区域可以是一个大学校园、一个商场、一个停车的区域。 </pre> 在 ES 中通过 '''geo_shape''' 类型,以图形的方式存储地理信息,而不仅仅是一个经纬度坐标点。 geo_shape 类型支持的图形包括:点、线、多边形、圆等等,通过 geo_shape 我们可以存储一个图形,用来表示一个地理信息。 * 在几何图形上面,一个几何图形也是由无数个坐标点组成,因此 geo_shape 的图形也是有多个经纬度组成。 === 基于地理形状的搜索 === ES 中如果我们存储的数据是 geo_shape 类型,那么只能通过 geo_shape 类型进行图形搜索。 下面是常用的地理形状搜索: # '''交集''':两个 geo_shape 图形重叠的话,就匹配成功(默认方式)。 # '''不重叠''':两个 geo_shape 图形不重叠的话,就匹配成功。 # '''包含''':一个 geo_shape 图形包含另外一个图形,就匹配成功。 基于地理形状,我们很容易实现'''地理围栏'''技术。
返回至“
ElasticSearch GEO:GEO基本概念
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息