高效实践|ES地理位置查询的一次应用实践

最近参加一个开发需求评审,要实现一个根据经纬度和距离查询数据的功能。

一开始听到做这个需求有点头大,丝毫没有头绪。

正在我想实现方法时候,一个架构大佬自信满满的说通过高德地图可以实现,不过查询的范围不是一个圆,而是一个长方形。emmm...产品咬咬牙同意了。

需求评审结束后,管理后台和web端根据这个方向,在互联网的大海里飘荡,最后找到一个实现方法。拷贝、调试、发布,在经过一顿猛如虎的操作后,功能提测了。

不出意外,测试的时候,漏洞百出。再往后发现,当个人的经纬度,定位到其他城市,再查询某个距离范围的数据,相差50-100公里,结果页面居然有数据。

没办法,只能重新实现了。。。

后来经一个同事说es有根据经纬度查询功能,我就在网上找api,结果还真找到了。在经过跟运维同事一次次部署、联调后,功能实现了。下面就是实现配置的过程:

1.es版本:

2.数据库版本:

3.数据库配置sql:

4.关键转换配置:

5.数据输出到es:

6.映射模板配置:

7.kibnan查询:

至此,功能实现,一个所传经纬度为圆点,200KM以内的数据都会查出来

注: longitude:经度 coordinate:维度

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3146264/blog/5536036