码迷,mamicode.com
首页 > 其他好文 > 详细

elasticsearch 经纬度查询

时间:2017-12-07 12:01:47      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:elasticsearch 经纬度查询

curl -XPUT "http://localhost:9200/shop/" -d '{   "mappings": {     "shop": {       "properties": {         "name": {           "type": "string"         },         "location": {           "type": "geo_point",//经纬度类型 "lat_lon": true, "fielddata": {       "format":    "compressed", //压缩模式,节省内存       "precision": "3m"     }         }       }     }   } }'; curl -XPUT http://localhost:9200/shop/shop/1 -d' {"name": "北京", "location" : "39.9047253699,116.4072154982"} '; curl -XPUT http://localhost:9200/shop/shop/2 -d' {"name": "顺义", "location" : "40.1299127031,116.6569478577"} '; curl -XPUT http://localhost:9200/shop/shop/3 -d' {"name": "天津", "location" : "39.0850853357,117.1993482089"} '; curl -XPUT http://localhost:9200/shop/shop/4 -d' {"name": "上海", "location" : "31.2304324029,121.4737919321"} '; curl -XGET "http://localhost:9200/shop/shop/_search?pretty" -d '{   "query": {     "filtered": {       "filter": {         "geo_distance": {           "distance": "28km",   "type":    "indexed",   "distance_type": "sloppy_arc",           "location": {              "lat":  39.9682060617,             "lon":  116.4107280170           }         }       }     }   },   "sort": [     //按距离排序     {       "_geo_distance": {         "location": {            "lat":  39.9682060617,           "lon":  116.4107280170         },         "order":         "asc",         "unit":          "km",          "distance_type": "sloppy_arc" //推荐适应此模式 plane 不准,精度太差       }     }   ] }' 再举一个更加实际的例子 curl -XGET "http://localhost:9200/shop/shop/_search?pretty" -d '{   "query" : {     "function_score" : {       "query" : {         "bool" : {           "filter" : { "geo_distance": { "distance": "28km", "type":    "indexed", "distance_type": "sloppy_arc", "location": {              "lat":  39.9682060617,             "lon":  116.4107280170 } }           }         }       },       "functions" : [ {         "script_score" : {           "script" : {             "inline" : "return 0"           }         }       },{      "gauss": {   //按举例远近打分                   "location": {                      "origin": "39.9682060617,116.4107280170",                      "scale": "5km",                      "offset": "0",                      "decay": 0.5                   }                },                "weight": "1"       } ],       "score_mode" : "sum",       "boost_mode" : "replace"     }   } }' 此时你会看到北京的得分是0.25分,因为差5公里,衰减0.5, 北京距此坐标7公里,所以取值0.25.


elasticsearch 经纬度查询

标签:elasticsearch 经纬度查询

原文地址:http://blog.51cto.com/12597095/2048249

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!