原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/geo-shapes.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/geo-shapes.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/geo-shapes.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
地理形状 (Geo Shapes)edit
地理形状(Geo-shapes)使用一种与地理坐标点完全不同的方法。我们在计算机屏幕上看到的圆形并不是由完美的连续的线组成的,而是通过将相邻的像素点着色画出来的一个近似的圆。地理形状的工作方式大致如此。
复杂的形状, 比如点、线、多边形、多多边形、中空多边形, 都是通过 geohash 单元格 “画出来” 的,这些形状会转化为一个被它所覆盖到的 geohash 的集合。
实际上,有两种类型的网格可以被用于 geo-shapes:默认使用的 geohash, 之前已经讨论过,另外一种是 四叉树(quad trees) 。四叉树与 geohash 类似,除了四叉树每个层级只有 4 个单元格,而不是 32 。这个差异取决于选择的编码方式。
组成形状的 geohash 都会被索引, 就好像它们是 词项(term) 一样。有了这些信息,通过查看是否有相同的 geohash 词项(term),就可以很轻易地检查两个形状是否有交集。
geo-shapes 有以下作用:判断查询的形状与索引中的形状的关系。这些 关系
可能是下列之一:
-
intersects
- 查询的形状与索引的形状有重叠(默认)。
-
disjoint
- 查询的形状与索引的形状完全 不 重叠。
-
within
- 索引的形状完全被包含在查询的形状中。
Geo-shapes 不能用于计算距离、排序、打分或者聚合。