Elasticsearch基于地理位置查询 geo_point
我们可能会遇到根据当前所在的位置,找到自己身边的符合条件的一些商店,酒店之类的。它主要支持两种类型的地理查询:一种是地理点(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相关推荐
- Elasticsearch实战——地理位置查询
Elasticsearch实战--地理位置查询 文章目录 Elasticsearch实战--地理位置查询 1. 半径查询(geo_distance query) 2. 指定矩形内的查询(geo_bou ...
- Elasticsearch 基于地理位置的搜索查询
ES为用户提供了基于地理位置的搜索功能.它主要支持两种类型的地理查询:一种是地理点(geo_point),即经纬度查询,另一种是地理形状查询(geo_shape),即支持点,线,圆形和多边形等查询. ...
- elasticsearch之地理位置查询geo_shape
目录 概念 创建索引mapping 添加数据 地理查询 代码示例 概念 geo_shape则表示有多个点连成线组成的形状,实际开发中,如果我们的地理坐标是一个地理形状,则可以使用地理形状数据类型进行插 ...
- Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合
Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...
- ElasticSearch之基于地理位置的搜索
在某些时候,我们希望搜索到某个区域内的特定目标建筑物,或者说要查询某个城市某个区内的楼盘等,诸如此类的需求,还有我们看到的在百度地图或者高德地图上,在某个区域内显示出我们关心的数据,都可以算是一种基于 ...
- 基于多种服务的地理位置查询系统
本文为掘金投稿,译文出自 : 掘金翻译计划 原文链接 : Geolocation using multiple services 原文作者 : wsdookadr,感谢作者对本篇文章的翻译授权. 译者 ...
- 详解基于MongoDB的地理位置查询,结合Symfony2演示
简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...
- ES(Elasticsearch)基本查询总结(含docker安装,python操作)
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...
- 03.elasticsearch pipeline aggregation查询
文章目录 1. pipeline aggregation查询语法 1. 符号代表 2. 聚合层级 2. pipeline aggregation 查询类型概览 1. sibling aggregati ...
最新文章
- 有方向的CNN--Oriented Response Networks
- 洛谷 P2015 二叉苹果树
- 标准RTSP 消息的错误代码
- 新颖的自我介绍_公众场合,如何做一个吸睛的自我介绍?
- python包之间引用_python 子包引用父包和其他子包
- 汇编语言学习--转移指令的原理
- 岩土工程颗粒流软件PFC6.0技巧——按计算时间导出数据、图像及保存文件
- 方正字库的手写字体开始出真GBK了
- 网易云信 android,网易云信/NIM_Android_UIKit
- stay foolish, stay hungry
- 瑞吉外卖项目重难点及易错点知识点总结
- 浅谈MYSQL之级联复制(附带实验)
- SpringCloud微服务项目实战 - 6.延迟任务
- 【应急响应】驱动人生供应链木马攻击2019.1.30变种木马分析
- 微信小程序:全新趣味测试
- 百度云虚拟主机bch 重定向
- antd vue 多个下拉 联动_antd中select下拉框值为对象选中的问题
- 非常轻松地谈谈dB、dB、dBm、dBi
- 2016校招薪资汇总
- 爱了,阿里P9开源分享内部Java核心开发手册(2022版)覆盖P5到P8
热门文章
- galaxy buds耳机一只耳机断开连接
- 将本地仓库推送到远程SSHHTTPS
- PSINS源码test_SINS_DR解析
- J2EE、J2SE、J2ME区别
- 生命是一种长期而持续的累积 - 台湾清华彭明辉老师 [转]
- Java: static,final,代码块 的详解
- spark submit参数及调优(转载)
- 极客日报第4期:爆料 华为鸿蒙手机 OS 开发者 Beta 版预计 12 月 18 日开放;程序员的幸福指数是如何下降的?
- 整顿一年再次增资近50%,为什么蚂蚁集团要重启IPO?
- 互联网校招项目经验备战方法论和要求详解