基于Elasticsearch的地理位置简单搜索

栏目: 后端 · 发布时间: 5年前

内容简介:因为公司需要使用一个需求, 通过用户的当前地理位置消息搜索出周边的一些数据, 如果使用php进行大数据计算的话,非常消耗性能,所以采用es包的使用:

汇总一些简单用法

基于Elasticsearch的地理位置简单搜索

因为公司需要使用一个需求, 通过用户的当前地理位置消息搜索出周边的一些数据, 如果使用 php 进行大数据计算的话,非常消耗性能,所以采用es

相关文档学习

包的使用:

https://packagist.org/package...

https://www.cnblogs.com/codeA...

地理位置的查询:

http://cwiki.apachecn.org/pag...

经纬度查询实例:

https://cloud.tencent.com/inf...

创建索引

PUT http://localhost :9200/show

创建索引字段

PUT http://localhost :9200/show/store/_mapping

{ 
    "store": { 
            "_all":{ 
            "enabled":false 
            }, 
            "properties": { 
                "id": { 
                    "type": "integer" 
                }, 
                "name": { 
                    "type": "text", 
                    "analyzer": "ik_max_word" 
                }, 
                "type": { 
                    "type": "integer"
                },
                "position": {
                    "properties": {
                        "location": {
                            "type": "geo_point"
                        }
                    }
            }
            } 
        } 
}

创建索引文档

PUT http://localhost:9200/show/test/2

{ 
    "id" : 1, 
    "name" :  "建升大厦", 
    "type" :  1,
    "position":{
        "location" : {
            "lat" : 22.6482057076,
            "lon" : 114.1250142233
        }
    }
}


PUT http://localhost:9200/show/test/1

{ 
    "id" : 2, 
    "name" :  "深圳市第三人民医院", 
    "type" :  1,
    "position":{
        "location" : {
            "lat" : 22.6352587415,
            "lon" : 114.1289020619
        }
    }
}

PUT http://localhost:9200/show/test/3

{ 
    "id" : 3, 
    "name" :  "深圳百合医院", 
    "type" :  1,
    "position":{
        "location" : {
            "lat" : 22.6164455768,
            "lon" : 114.1395956293
        }
    }
}

开始查询

查询所有

POST http://localhost:9200/show/store/_search //

{
    "query": {
        "bool": {
            "must": {
                "match_all": {
                    
                }    
            },
            "filter": {
                "geo_distance": {
                    "distance" : "10km",
                    "position.location": {
                        "lat": 22.6497899384,
                        "lon": 114.1258725301
                    }
                }
            }
        }
    },
    "sort": [ 
    { 
        "_geo_distance": { 
            "position.location": { 
            "lat": 22.6497899384, 
            "lon": 114.1258725301
        }, 
            "order": "asc", 
            "unit": "km", 
            "mode": "min"
        } 
    } 
    ]
}

查询+分词

{
    "from":3,
    "size":3,
    "query": {
        "bool": {
            "must": {
                "match": {
                    "name": "深圳"
                }    
            },
            "filter": {
                "geo_distance": {
                    "distance" : "100km",
                    "position.location": {
                        "lat": 22.649928,
                        "lon": 114.125646
                    }
                }
            }
        }
    },
    "sort": [ 
    { 
        "_geo_distance": { 
        "position.location": { 
        "lat": 22.6497899384, 
        "lon": 114.1258725301
    }, 
        "order": "asc", 
        "unit": "km", 
        "mode": "min"
        } 
    } 
    ]
}

以上文档的下载地址

点我查看下载地址-

from: 邓尘锋


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Dive Into Python 3

Dive Into Python 3

Mark Pilgrim / Apress / 2009-11-6 / USD 44.99

Mark Pilgrim's Dive Into Python 3 is a hands-on guide to Python 3 (the latest version of the Python language) and its differences from Python 2. As in the original book, Dive Into Python, each chapter......一起来看看 《Dive Into Python 3》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具