前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >elasticsearch geo_point 地理位置过滤 按经度排序

elasticsearch geo_point 地理位置过滤 按经度排序

作者头像
双面人
发布2019-08-30 12:01:21
1.4K0
发布2019-08-30 12:01:21
举报
文章被收录于专栏:热爱IT

elasticsearch 支持强大的经纬度坐标过滤。

1、首先要建立坐标类型的字段'type' ='geo_point'

     es存储的值是这样的:

"poi": [           113.40780444444,           22.920241666667       ],

2、构建各种经纬度过滤条件

a、获取屏幕范围内,只需屏幕的两个对角的坐标。

{         "from": 0,         "size": 20,         "query": {             "filtered": {                 "query": {                     "match_all": []                 },                 "filter": {                   "geo_bounding_box" : {                     "poi" : {                         "top_right" : {                             "lat" : 23.172558,                             "lon" : 113.370667                         },                         "bottom_left" : {                             "lat" : 23.14997,                             "lon" : 113.313425                         }                     }                   }                 }             }         }     }

php代码:

$filter[] = array('geo_bounding_box'=>array('poi'=>array(                 'top_right'=>array('lat'=>$this->params['rightTop'][1],'lon'=>$this->params['rightTop'][0]),                 'bottom_left'=>array('lat'=>$this->params['leftBottom'][1],'lon'=>$this->params['leftBottom'][0]),             )));          $request['body']['query']['filtered']['filter']['and'] = $filter;   b、以一个点为中心,查找范围

$request['body']['query']['filtered']['filter']['and'][] = array(                     'geo_distance_range' => array(                         'from' => '0km',                         'to'   => '80km',                         'poi'  => array('lon' => $longitude, 'lat' => $latitude)                     ),                 );

c、按距离排序

"sort": {             "_geo_distance": {                 "poi": {                     "lon": "113.25909555556",                     "lat": "23.131899722222"                 },                 "order": "asc",                 "unit": "km"             }         }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档