elasticsearch geo_point 地理位置过滤 按经度排序-程序员宅基地

技术标签: 大数据  

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"
            }
        }

参考官方资料:https://www.elastic.co/blog/geo-location-and-search
 

转载于:https://my.oschina.net/u/3371661/blog/3099365

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chengxiong7602/article/details/100912545

智能推荐

LeetCode String to Integer (atoi) c++_c++ atoi越界-程序员宅基地

文章浏览阅读561次。首先总结下做题的过程,最开始我又忘记了应该先明确思路再写代码的信条,写一点提交一次,改一次,效率极低,直到自己崩溃,推翻重做。问题分析(题目中有) String转int考虑空格问题考虑+,-号问题考虑整型越界问题解决办法 考虑从前遍历还是从后遍历空格问题 空格在数字前:跳过空格在数字中间:跳出+号问题:在数字前跳过即可,在数字中跳出-号问题:在数字前,记录,最后结果*-1,在_c++ atoi越界

Android 音乐APP(五)音乐通知栏、后台播放音乐,程序员必须要了解的知识点_android 音视频播放通知栏控制-程序员宅基地

文章浏览阅读780次,点赞13次,收藏25次。外链图片转存中…(img-W5XkH1g3-1712366644249)][外链图片转存中…(img-J2Cr3hvG-1712366644250)][外链图片转存中…(img-39HoYf8D-1712366644250)][外链图片转存中…(img-utHeNPyS-1712366644250)][外链图片转存中…(img-jRrbl8QM-1712366644251)]_android 音视频播放通知栏控制

android画布画弧形,在Android中绘制圆弧边缘圆弧,具有浮雕效果-程序员宅基地

文章浏览阅读419次。我正在尝试开发一个自定义组件,即圆弧滑块,我完成了弧和拇指,但不能弄清楚如何绘制圆弧边缘弧和其中的浮雕效果。在这一刻,滑块看起来像这样绘制弧的代码是private void drawSlider(Canvas canvas) {float sweepDegrees = (value * arcWidthInAngle)/ (maximumValue - minimumValue);// the g..._android使用弯曲边缘绘制圆弧

python 程序运行计时 动态,在python中运行计时器几分钟-程序员宅基地

文章浏览阅读229次。我试图每秒运行一个函数“foo”。我要说几分钟。在函数foo()向服务器发出100个HTTP请求(其中包含一个JSON对象),并打印JSON响应。在简而言之,我必须在5分钟内每秒发出100个HTTP请求。在我刚开始学习python,知识面不广。这就是我所尝试的:import threadingnoOfSecondsPassed = 0def foo():global noOfSecondsPass..._python 程序运行计时动态效果

linux离线安装llvm,Debian/Ubuntu Linux 下安装LLVM/Clang 编译器-程序员宅基地

文章浏览阅读670次。第一步,首先编辑 /etc/apt/sources.list,增加下面源:(加入源后务必执行apt-get update,假设有错误提示,先执行第二步,然后apt-get update)Debian平台:deb http://llvm.org/apt/wheezy/ llvm-toolchain-wheezy maindeb-src http://llvm.org/apt/wheezy/ llvm..._llvm离线 升级

Java集合 —— Map集合-程序员宅基地

文章浏览阅读786次,点赞27次,收藏13次。具体实现我在之前的博客写过了集合List和Map——重写equals和hashCode方法(集合元素是类的对象)这里举一个简单的例子return age;@Override@Override自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

随便推点

Tech Stuff - Mobile Browser ID (User-Agent) Strings-程序员宅基地

文章浏览阅读10w+次。Tech Stuff - Mobile Browser ID (User-Agent) StringsThe non-mobile stuff is here (hint: you get jerked back by the power cord after 3 feet and your arms start to ache after 10 minutes with non-mobi..._欧vodafonewifi18

git 常用命令大全(附命令注释)_git命令大全-程序员宅基地

文章浏览阅读1k次,点赞14次,收藏27次。10.1 从命令行创建一个新的仓库10.2 从命令行推送已经创建的仓库11 其他常用命令git --version 查看git版本git config --global user.name 查看用户名git config --global user.name “serena” 修改用户名git config --global user.email 查看邮箱git config --global_git 常用命令

第一章 计算机系统体系结构_体系结构和微架构-程序员宅基地

文章浏览阅读685次。计算机组成原理重点讲授计算机系统的硬件组成,及其主要功能子系统的基本原理和逻辑设计;主要内容包括计算机系统概述,数据的表示、运算与校验,CPU子系统,存储子系统,总线与I/O子系统,I/O设备及接口等。_体系结构和微架构

php怎么自动识别车牌号,车牌号自动识别系统怎么录入,很多你不知道的潜规则...-程序员宅基地

文章浏览阅读683次。每次去商场之类的,车辆都需要自动识别下,不用下车就可以完成的操作,的确是方便的很。今天要讲的,就是关于车牌号自动识别系统怎么录入方面的内容,了解其中的原理,才能更好的去消费它。一、车牌识别系统车牌识别系统(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系..._车牌号自动识别系统

java调用c入门介绍._java 调用c-程序员宅基地

文章浏览阅读937次。一:编写一个包含本地方法的java类.并使用System.laod()或者是使用System.loadLibrary()方法加载共享库文件.注:如果使用System.loadLibrary(),该方法参数接收一个共享库的名称. 共享库的参数名称命名的规则如下:lib+共享库的名称+".so"或者是".dll". 如果使用System.load();那么需要加载该库文件的完整_java 调用c

今年暑假不AC - 九度教程第22题_今年暑假不accsdn-程序员宅基地

文章浏览阅读460次。今年暑假不AC - 九度教程第22题题目时间限制:1 秒 内存限制:128 兆 特殊判题:否题目描述:“今年暑假不AC?”“是的。”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%…”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永..._今年暑假不accsdn

推荐文章

热门文章

相关标签