ES中特有的类型geo_point,是用来存储地图类型的。店铺推荐、地图搜索和外卖平台等,实现目标距离你多少米,就是用这个数据类型做出来的。
其中,ES支持的地图检索方式有以下几种;
geo_distance:直线距离检索,如给定点A,要求返回地图上距离点A三千米的店铺
geo_bounding_box:以两个点确定一个矩形,获取在矩形内的全部数据
geo_polygon:以多个点,确定多边形,获取多边形内的全部数据
本文则以geo_distance为例说明。
2.1 新建ES索引
2.2 添加索引数据
2.3 执行ES搜索
搜索条件:
【query中的参数】
location:指定定位的经纬度,一般取用户定位点的经纬度。
lat:纬度。
lon:经度。
distance:距离指定定位的最远距离,即本次搜索结果必须在指定定位点到该距离之间。
distance_type:arc表示圆形范围
【sort】中的参数
location:指定定位的经纬度,一般取用户定位点的经纬度。
order:距离排序,asc正序,desc则是倒序。
unit:距离单位,m就是米,km就是千米。
执行搜索,得到搜索结果:
根据前面的搜索条件,执行搜索后得到是按照当前定位点的经纬度,查询距离3km以内的所有店铺,由近及远的排序的结果。
location:每个店铺所在的经纬度。
sort:每个店铺距离当前定位点的距离。前面搜索条件我们设置了单位为米,所以这里就是距离1810米的意思。
本文地址:http://sicmodule.glev.cn/quote/11239.html 歌乐夫 http://sicmodule.glev.cn/ , 查看更多