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