Elasticsearch7.4.2新增了Shape字段数据类型(Field datatype),属于一种特殊化的数据类型,用于表示任意的笛卡尔坐标的几何图形,也就是直角坐标系下的几何坐标。
Shape类型和Geo-Shape需要区分清楚,Geo-Shape和Geo-point一起属于地理数据类型,Geo-shape用以表示复杂图形,比如多边形、矩形等,Geo-point表示经纬度的坐标点,只支持WGS84坐标系,坐标范围Lat值为[-90,90],Lon为[-180,180]。
Shape类型支持点、线、面、多面、范围等几何要素,可以对现实世界建立二维平面模型。支持跟指定图形相交、包含或是不相交等图形检索(Shape query)。
Shape字段映射GeoJSON和WKT(Well-Known Text)的几何对象到shape类型。在使用的时候,用户必须显式映射(map)字段为shape类型。
shape检索还不支持multipoint类型,以及包含关系(CONTAINS)的检索。
Shape数据类型可以支持的GeoJSON格式的几何要素有:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection,支持的WKT格式的几何要素有:POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION、BBOX。所有类型在输入的时候必须有内部的type和coordinates字段。跟地理空间的API(Geospatial API)不同,Shape类型的坐标串的格式无论是以GeoJSON还是WKT格式保存,都是(X,Y)的顺序。
在elasticsearch中,不支持根据几何形状进行排序,也不支持直接对Shape字段进行检索,shape值只能通过_source字段进行检索。