ES 地图经纬度搜索

这篇具有很好参考价值的文章主要介绍了ES 地图经纬度搜索。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES中提供了一个数据类型 geo_point,这个类型就是用来存储经纬度的。

创建一个带geo_point类型的索引,并添加测试数据

# 创建一个索引,指定一个name,locaiton
PUT /map
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
    "map": {
      "properties": {
        "name": {
          "type": "text"
        },
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}


# 添加测试数据
PUT /map/map/1
{
  "name": "天安门",
  "location": {
    "lon": 116.403981,
    "lat": 39.914492 
  }
}


PUT /map/map/2
{
  "name": "海淀公园",
  "location": {
    "lon": 116.302509,
    "lat": 39.991152 
  }
}

PUT /map/map/3
{
  "name": "北京动物园",
  "location": {
    "lon": 116.343184,
    "lat": 39.947468 
  }
}

ES的地图检索方式

es经纬度范围查询,elasticsearch,大数据

 文章来源地址https://www.toymoban.com/news/detail-517108.html

基于RESTful实现地图检索

# geo_distance
POST /map/map/_search
{
  "query": {
    "geo_distance": {
      "location": {				# 确定一个点
        "lon": 116.433733,
        "lat": 39.908404
      },
      "distance": 3000,			 # 确定半径
      "distance_type": "arc"     # 指定形状为圆形
    }
  }
}
# geo_bounding_box
POST /map/map/_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {				# 左上角的坐标点
          "lon": 116.326943,
          "lat": 39.95499
        },
        "bottom_right": {			 # 右下角的坐标点
          "lon": 116.433446,
          "lat": 39.908737
        }
      }
    }
  }
}
# geo_polygon
POST /map/map/_search
{
  "query": {
    "geo_polygon": {
      "location": {
        "points": [					# 指定多个点确定一个多边形
          {
            "lon": 116.298916,
            "lat": 39.99878
          },
          {
            "lon": 116.29561,
            "lat": 39.972576
          },
          {
            "lon": 116.327661,
            "lat": 39.984739
          }
        ]
      }
    }
  }
}
// 基于Java实现geo_polygon查询
@Test
public void geoPolygon() throws IOException {
    //1. SearchRequest
    SearchRequest request = new SearchRequest(index);
    request.types(type);

    //2. 指定检索方式
    SearchSourceBuilder builder = new SearchSourceBuilder();
    List<GeoPoint> points = new ArrayList<>();
    points.add(new GeoPoint(39.99878,116.298916));
    points.add(new GeoPoint(39.972576,116.29561));
    points.add(new GeoPoint(39.984739,116.327661));
    builder.query(QueryBuilders.geoPolygonQuery("location",points));

    request.source(builder);

    //3. 执行查询
    SearchResponse resp = client.search(request, RequestOptions.DEFAULT);

    //4. 输出结果
    for (SearchHit hit : resp.getHits().getHits()) {
        System.out.println(hit.getSourceAsMap());
    }
}

到了这里,关于ES 地图经纬度搜索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 腾讯地图获得地图经纬度数据进行描边

    登录腾讯地图 微信小程序JavaScript SDK | 腾讯位置服务   接口调用:直接浏览器调用就行 一,可以先通过查询地区名字来获得地区码: https://apis.map.qq.com/ws/district/v1/search?key=你申请获得keykeyword=梁溪区 二,用地区码查询描边经纬度: 你申请获得key https://apis.map.qq.com/ws/distric

    2023年04月24日
    浏览(40)
  • 使用腾讯地图获取地址经纬度

    1、在终端执行 2.在main.js引入  或则直接在需要页面引入 3、写方法 具体的参考腾讯开发文档https://lbs.qq.com/service/webService/webServiceGuide/webServiceGeocoder

    2024年02月09日
    浏览(39)
  • 高德地图根据经纬度获取地址信息

    主要是使用高德里面 地理编码与逆地理编码 的 getAddress 这个方法, 根据逆向地理编码:将地理坐标(经纬度)转换成地址描述信息,对应为AMap.Geocoder的getAddress方法。 具体使用的代码为 最后看效果 这是传的经纬度与解析出来的地理位置 如果需要正向解析将地理位置变成经

    2024年02月11日
    浏览(53)
  • 微信小程序 - 最新打开地图选择位置功能,支持定位附近位置、搜索全国位置及地图标点位置、检索周边位置,可移动选点标记位置(点击选择位置后,获取位置精确详细地址及名称,拿到经纬度等信息)

    网上的教程都太乱了,各种老文章乱七八糟无法采用。 本文 实现了微信小程序开发中,打开腾讯内置地图进行自动定位,可选择附近位置及搜索位置等,获取到所选位置的详细地址名称及经纬度等信息。 您可以直接复制示例代码,稍微改改样式就能用了。 如下图真机所示,

    2024年02月15日
    浏览(59)
  • 微信小程序-引入地图、获得经纬度

    实际这是一个获得经纬度的方法,但是有了经纬度可以做很多事情 点击按钮跳转到一个单独的页面(地图,可导航) 在页面内嵌一个独立的小区域 首先可看一下腾讯地图官方文档 微信小程序JavaScript SDK | 腾讯位置服务 最基本:先引入js,获得key, js文件:https://mapapi.qq.com

    2024年02月10日
    浏览(52)
  • Python根据经纬度在地图上显示(folium)

    1、location地图中心点 经纬度,list 或者 tuple 格式,顺序为 latitude(纬度), longitude(经度) 2、zoom_start地图等级 缩放值,默认为 10,值越大比例尺越小,地图放大级别越大 3、tiles 显示样式,默认*‘OpenStreetMap’*,也就是开启街道显示;也有一些其他的内建地图样式,如’Stamen T

    2024年02月14日
    浏览(57)
  • 小程序通过经纬度获取省市区(高德地图)

    在app.js文件中引入高德地图的js文件 获取当前定位   amap-wx.130.js文件

    2024年02月08日
    浏览(56)
  • 前端Vue腾讯地图SDK Api经纬度解析为地址信息Geocoding 可用于定位经纬度信息解析为地址

    前端Vue腾讯地图SDK Api经纬度解析为地址信息Geocoding 可用于定位经纬度信息解析为地址, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13311 效果图如下: 使用方法 HTML代码实现部分

    2024年02月11日
    浏览(53)
  • vue项目接入高德地图点击地图获取经纬度及省市区

    准备工作,可以先看官方的介绍,JSAPI结合Vue使用,这个不需要在main.js中引入 index.html中 index.vue的html部分 index.vue的script部分 index.vue的css部分 页面效果 逆解析经纬度得到的详细地址

    2024年02月16日
    浏览(53)
  • Cesium 在地图鼠标点击进行定位,并显示经纬度

    vue工程加载cesium 可以参考之前的文章:vue 使用cesium简单介绍_vue使用cesium_夜跑者的博客-CSDN博客 这篇文章介绍一下如何响应鼠标左键获取经纬度,以及在地图上添加广告牌。 1)响应鼠标左键,并获取经纬度         主要用到了2个接口ScreenSpaceEventHandler, setInputAction,代码

    2024年02月17日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包