我们可能会遇到根据当前所在的位置,找到自己身边的符合条件的一些商店,酒店之类的。它主要支持两种类型的地理查询:一种是地理点(geo_point),即经纬度查询,另一种是地理形状查询(geo_shape),即支持点、线、圈、多边形查询等

距离计算类型

两点间的距离计算,有多种牺牲性能换取精度的算法:

arc

最慢但最精确的是 arc 计算方式,这种方式把世界当作球体来处理。不过这种方式的精度有限,因为这个世界并不是完全的球体。

plane

plane 计算方式把地球当成是平坦的,这种方式快一些但是精度略逊。在赤道附近的位置精度最好,而靠近两极则变差。

sloppy_arc

如此命名,是因为它使用了 Lucene 的 SloppyMath 类。这是一种用精度换取速度的计算方式, 它使用 Haversine formula来计算距离。它比 arc 计算方式快 4 到 5 倍,并且距离精度达 99.9%。这也是默认的计算方式。

下面是mapping定义的简单格式

PUT myindex
{"mappings": {"mytype": {    #这里写上类型,ES6.3后都是doc"properties": {"title": {"type": "text","boost": 2},"content": {"type": "text"}}}}
}

通过地理坐标点过滤

有四种地理坐标点相关的过滤方式可以用来选中或者排除文档:

  • geo_bounding_box:: 
    找出落在指定矩形框中的坐标点
  • geo_distance:: 
    找出与指定位置在给定距离内的点
  • geo_distance_range:: 
    找出与指定点距离在给定最小距离和最大距离之间的点
  • geo_polygon:: 
    找出落在多边形中的点。这个过滤器使用代价很大。当你觉得自己需要使用它,最好先看看 geo-shapes

索引与mapping创建
http://192.168.11.237:9200/attractions/
{"mappings": {"restaurant": {"properties": {"name": {"type": "text"},"location": {"type": "geo_point"}}}}
}插入的数据格式
http://192.168.11.237:9200/attractions/restaurant/1
{"name":     "Chipotle Mexican Grill","location": "40.715, -74.011"
}
http://192.168.11.237:9200/attractions/restaurant/3
{"name":     "Pala Pizza","location": "40.722, -73.989"
}
http://192.168.11.237:9200/attractions/restaurant/3
{"name":     "Mini Munchies Pizza","location": " 40.719,-73.983"
}
查询
http://192.168.11.237:9200/attractions/restaurant/_search
{"query": {"filtered": {"filter": {"geo_distance": {"distance": "10km", "location": { "lat":  40.715,"lon": -73.988}}}}}
}

ES 改变索引mapping类型,需要 别名加引用

es中想要给一个已经建好映射的索引改变映射结果,即使改变一个字段类型都是不支持的,需要重新建立索引以及映射结构,然后把以前的数据导入到新建的索引结构中去,完成改变映射结构的目的。

步骤:

1.给已有的索引定一个别名,并指向该别名

2.新建一个新的索引,新的映射结构

3.将别名指向新的索引,取消旧的索引与别名之间的关联

通过这几部即可达到重新改变映射结构的内容,例如我们想改变library01的映射中price字段的类型由现有的double变为integer类型。

从上面图中可以看出来price 类型已经是integer类型了,客户端不需要知道变化也不需要停止es服务,在必要的时候可以使用这个方法。

在映射中会有很多es关键字其它还是需要了解一下,不必死记,用熟了自然而然就知道了给大家贴一下

Elasticsearch基于地理位置查询 geo_point相关推荐

  1. Elasticsearch实战——地理位置查询

    Elasticsearch实战--地理位置查询 文章目录 Elasticsearch实战--地理位置查询 1. 半径查询(geo_distance query) 2. 指定矩形内的查询(geo_bou ...

  2. Elasticsearch 基于地理位置的搜索查询

    ES为用户提供了基于地理位置的搜索功能.它主要支持两种类型的地理查询:一种是地理点(geo_point),即经纬度查询,另一种是地理形状查询(geo_shape),即支持点,线,圆形和多边形等查询. ...

  3. elasticsearch之地理位置查询geo_shape

    目录 概念 创建索引mapping 添加数据 地理查询 代码示例 概念 geo_shape则表示有多个点连成线组成的形状,实际开发中,如果我们的地理坐标是一个地理形状,则可以使用地理形状数据类型进行插 ...

  4. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

  5. ElasticSearch之基于地理位置的搜索

    在某些时候,我们希望搜索到某个区域内的特定目标建筑物,或者说要查询某个城市某个区内的楼盘等,诸如此类的需求,还有我们看到的在百度地图或者高德地图上,在某个区域内显示出我们关心的数据,都可以算是一种基于 ...

  6. 基于多种服务的地理位置查询系统

    本文为掘金投稿,译文出自 : 掘金翻译计划 原文链接 : Geolocation using multiple services 原文作者 : wsdookadr,感谢作者对本篇文章的翻译授权. 译者 ...

  7. 详解基于MongoDB的地理位置查询,结合Symfony2演示

    简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...

  8. ES(Elasticsearch)基本查询总结(含docker安装,python操作)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...

  9. 03.elasticsearch pipeline aggregation查询

    文章目录 1. pipeline aggregation查询语法 1. 符号代表 2. 聚合层级 2. pipeline aggregation 查询类型概览 1. sibling aggregati ...

最新文章

  1. 有方向的CNN--Oriented Response Networks
  2. 洛谷 P2015 二叉苹果树
  3. 标准RTSP 消息的错误代码
  4. 新颖的自我介绍_公众场合,如何做一个吸睛的自我介绍?
  5. python包之间引用_python 子包引用父包和其他子包
  6. 汇编语言学习--转移指令的原理
  7. 岩土工程颗粒流软件PFC6.0技巧——按计算时间导出数据、图像及保存文件
  8. 方正字库的手写字体开始出真GBK了
  9. 网易云信 android,网易云信/NIM_Android_UIKit
  10. stay foolish, stay hungry
  11. 瑞吉外卖项目重难点及易错点知识点总结
  12. 浅谈MYSQL之级联复制(附带实验)
  13. SpringCloud微服务项目实战 - 6.延迟任务
  14. 【应急响应】驱动人生供应链木马攻击2019.1.30变种木马分析
  15. 微信小程序:全新趣味测试
  16. 百度云虚拟主机bch 重定向
  17. antd vue 多个下拉 联动_antd中select下拉框值为对象选中的问题
  18. 非常轻松地谈谈dB、dB、dBm、dBi
  19. 2016校招薪资汇总
  20. 爱了,阿里P9开源分享内部Java核心开发手册(2022版)覆盖P5到P8

热门文章

  1. galaxy buds耳机一只耳机断开连接
  2. 将本地仓库推送到远程SSHHTTPS
  3. PSINS源码test_SINS_DR解析
  4. J2EE、J2SE、J2ME区别
  5. 生命是一种长期而持续的累积 - 台湾清华彭明辉老师 [转]
  6. Java: static,final,代码块 的详解
  7. spark submit参数及调优(转载)
  8. 极客日报第4期:爆料 华为鸿蒙手机 OS 开发者 Beta 版预计 12 月 18 日开放;程序员的幸福指数是如何下降的?
  9. 整顿一年再次增资近50%,为什么蚂蚁集团要重启IPO?
  10. 互联网校招项目经验备战方法论和要求详解