最近参加一个开发需求评审,要实现一个根据经纬度和距离查询数据的功能。
一开始听到做这个需求有点头大,丝毫没有头绪。
正在我想实现方法时候,一个架构大佬自信满满的说通过高德地图可以实现,不过查询的范围不是一个圆,而是一个长方形。emmm...产品咬咬牙同意了。
需求评审结束后,管理后台和web端根据这个方向,在互联网的大海里飘荡,最后找到一个实现方法。拷贝、调试、发布,在经过一顿猛如虎的操作后,功能提测了。
不出意外,测试的时候,漏洞百出。再往后发现,当个人的经纬度,定位到其他城市,再查询某个距离范围的数据,相差50-100公里,结果页面居然有数据。
没办法,只能重新实现了。。。
后来经一个同事说es有根据经纬度查询功能,我就在网上找api,结果还真找到了。在经过跟运维同事一次次部署、联调后,功能实现了。下面就是实现配置的过程:
1.es版本:
2.数据库版本:
3.数据库配置sql:
4.关键转换配置:
5.数据输出到es:
6.映射模板配置:
7.kibnan查询:
至此,功能实现,一个所传经纬度为圆点,200KM以内的数据都会查出来
注: longitude:经度 coordinate:维度
{{o.name}}
{{m.name}}