我们都知道,Elasticsearch是一个全文检索引擎,其强大的全文检索能力可以支撑非常多的业务系统。但其实除了常规的数据类型,es还可以支持空间数据类型。目前Es可以支持两种空间数据类型,geo_point,geo_shape。笔者今天着重介绍一下Elasticsearch对geo_point数据类型的支持。
geo_point类型,实际上是经纬度的组合,主要用于地图空间数据的相关查询:
- 以某个坐标点为中心,搜索指定范围内的点;
- 通过空间属性聚合数据;
- 可以将距离作为相关性分数的一个计算因子;
- 通过距离进行排序。
1 创建mapping
插入geo_point类型的数据之前,需要先创建mapping,可以理解为关系型数据库中的表结构。
PUT my_index{ "mappings": { "properties": { "location": { "type": "geo_point" } } }}
2 插入geo_point类型数据的4种姿势
2.1 作为object插入
PUT my_index/_doc/1{ "text": "Geo-point as an object