Elasticsearch:位置搜索介绍

news2024/9/21 17:09:23

在这个互联网和信息时代,在应用程序和应用程序中启用基于位置的搜索是一个普遍的要求。 基于位置的搜索根据邻近度获取场所或地点,例如附近的餐馆、半径不超过 1 公里的待售房屋等。 我们还使用基于位置的搜索来查找前往某个地方或兴趣点的方向。

好消息是地理空间支持是 Elasticsearch 中的一等公民。 专用数据类型允许我们定义用于索引地理空间数据的模式,从而实现集中搜索。

Elasticsearch 提供一组地理空间搜索查询,例如 bounding_box、geo_distance 和 geo_shape,具体取决于给定的用例。 这些查询足以满足大多数用例。 这些查询中的每一个都满足本节中简要讨论的一组要求。

Bounding box query

有时,我们可能想找出周边地区的餐馆、学校或大学等地点的列表; 假设是正方形或长方形。 我们可以通过获取左上角和右下角的坐标集来构造一个矩形,通常称为地理矩形。 这些坐标由一对经度和纬度测量值组成,代表这些角。

Elasticsearch 提供了一个 bounding_box query,让我们可以搜索适合 geo rectangle 的所需地址。 此查询获取由我们的坐标集构建的地理矩形内的兴趣点(作为查询条件)。 例如,下图表示包含在一个这样的地理矩形中的地址。

如上图中的矩形标记,我们正在搜索伦敦市中心的地址,该区域在地理矩形中突出显示。 与此矩形相交的地址作为正结果返回。 如需了解如何做 bounding_box query,请参阅文章:

  • Elasticsearch:Geo Point 和 Geo Shape 查询解释

  • Elasticsearch:高级数据类型介绍

  • Elasticsearch:理解 Elastic Maps 中的 geohash 及其聚合

Geo_distance query

你可能看过好莱坞电影,其中一名 FBI 特工试图在一个围绕中心焦点画成圆圈的区域中锁定逃犯。 这正是 geo_distance query 所做的!

Elasticsearch 提供了 geo_distancequery 来获取圆圈内的地址。 给定的中心由经度和纬度以及作为距离的半径定义。 下图以图形方式演示了地理距离概念。

如图所示,我们有一个中心位置(在地图上显示为掉落的大头针)和一个覆盖我们要查找的地址的圆形区域。 焦点(或中心位置)是地图上由纬度和经度坐标指示的点。 了解如何做 geo_distance query,请参阅文章:

  • Elasticsearch:Geo Point 和 Geo Shape 查询解释

  • Elasticsearch:在 Elasticsearch 中按距离有效地对地理点进行排序

  • Elasticsearch:使用 Elasticsearch 进行地理位置搜索

Geo_shape query

还有另一种类型的查询,geo_shape query。 此查询获取给定几何构造的地理包络中的地理点(地址)列表。 信封可以是三边三角形或多边形(除非信封不能是开放式的)。 下图形象地展示了这个概念。

该图显示了在具有给定的六对坐标(每一对是具有纬度和经度的地理点)的地图上构建的六角形包络线。 geo_shape search 查找适合此多边形内的位置。想了解更多关于 geo_shape 方面的搜索,请阅读文章:

  • Elasticsearch:Geo Point 和 Geo Shape 查询解释
  • Elasticsearch:Geoshape query - 过滤含有地理位置的文档

  • Elasticsearch:如何制作 GeoJSON 文件并进行地理位置搜索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#代码修改设计原图psd、ai格式图层文字内容等导出bmp等,需要license 要高额付费放弃

Update text is supported only in licensed mode System.ComponentModel.LicenseException HResult0x80131901 MessageUpdate text is supported only in licensed mode SourceAspose.PSD StackTrace: at  .(Object ) at  . () at  .(Object , UInt32 )…

【C++学习】类和对象--对象特性

构造函数和析构函数 对象的初始化和清理是两个非常重要的安全问题 一个对象或变量没有初始状态,对其使用后果是未知的 使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 C利用构造函数和析构函数解决上述问题,这两个函数…

牛客竞赛字符串专题 NC237664 Typewriter(SAM + 树上倍增 + 二分 + 线段树优化dp)

本题主要考察了如何用 SAM 求原串每个前缀对应的能与非后缀匹配的最长后缀,以及如何求 SAM 每个节点 right 集合的 min / max。很有价值的一道串串题。 题意: 你有一台打字机,你需要用它打出一段只由小写字母构成的文本S。 设某个时刻&#…

java数据结构刷题二期

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c &…

考研数据结构--栈和队列

栈和队列 文章目录 栈和队列栈栈的定义(特点)栈的存储表示栈的基本操作栈的顺序存储方式和基本操作实现顺序栈的定义顺序栈的初始化顺序栈的判空顺序栈的判满顺序栈的进栈顺序栈的出栈取栈顶元素main函数测试 栈的链式存储方式和基本操作实现链栈的定义链…

sentiel安装与整合

(1)方案一:超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待(只能缓解,不能从根本上解决) (2)方案二:舱壁模式 限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。(会造成资源浪费) (3)方案三:熔断降…

不坑盒子 + 智能写作(Office、WPS插件)助你高效办公,早点下班回家。

不坑盒子简介 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档中,支持Office 2010以上的版本,用户可以…

ntp时间服务器配置,ssh免密登录 rhce(22)

目录 1.配置ntp时间服务器,确保客户端主机能和服务端主机同步时间. 2.配置ssh免密登录,能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 1.配置ntp时间服务器,确保客户端主机能和服务端主机同步时间. 安装时间…

(链表专题) 234. 回文链表——【Leetcode每日一题】

234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true 示例 2: 输入&…

【蓝桥杯】数组中存在K倍区间的子数组个数

文章目录 前言题目分析算法难度实战1、创建算法2、创建测试用例3、运行测试用例4、测试结果 总结 前言 蓝桥杯全国软件和信息技术专业人才大赛由工业和信息化部人才交流中心主办,每年参赛人数超过30000人。蓝桥杯大赛作为国内领先的全国性 IT 学习赛事,持续有力支撑…

Python爬虫自动化从入门到精通第9天(爬虫数据的存储)

爬虫数据的存储 数据存储概述MongDB数据库的概念MongDB的安装使用PyMongo库存储到数据库 数据存储概述 通常,从网页爬取到的数据需要进行分析、处理或格式化,然后进行持久化存储,以备后续使用。数据存储主要有以下两种方式: 1&am…

启动kafka报错ERROR Fatal error during KafkaServer startup. Prepare to shutdown

一、错误 报的错: ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) kafka.common.InconsistentBrokerIdException: Configured broker.id 0 doesn’t match stored broker.id Some(1) in meta.properties. If you m…

跟ChatGPT聊天、需求润色优化,禅道OpenAI 插件发布

禅道插件上新了,OpenAI 禅道集成,可提供神奇海螺聊天、需求润色功能。 神奇海螺 “章鱼哥,你为什么不问问神奇海螺呢?”——海绵宝宝 那么,就让我们问一问神奇 海螺吧!禅道上线神奇海螺功能,…

【C++】优先级队列,反向迭代器

文章目录 priority_queue的介绍和使用priority_queue的使用 反向迭代器 priority_queue的介绍和使用 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素&a…

数据分析之Pandas 基础入门

一、初始Pandas pandas 是数据分析三大件之一,是Python的核心分析库,它提供了快捷、灵活、明确的数据结构,它能够简单、直观、快速的处理各种类型的数据结构。 pandas 支持的数据结构如下: SQL 或Excel 类似的数据有序或无序的…

后端程序员必须学会的编辑器vim

vim编辑器使用小结 1. vim简介 Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Lin…

MyBatis(十一)、MyBatis查询语句专题

准备工作: 模块名:mybatis-007-select 打包方式:jar 引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。 引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml 创建pojo类:Car 创…

SQL sever数据库----基础增删改查操作与where条件限制

where条件限制方法 在SQL sever中使用where语句,可以对各种操作添加限制条件 基础格式为 ———————— where 逻辑表达式 例如限制条件的查询 select 范围 from 表名 where 逻辑表达式 逻辑表达式就是一个判断 如 a > 5 、a6>9、a>5 and b>5 各种…

k8s部署流水账

久仰大名k8s,业余选手一直望而却步。最近终于初步炮制成功。知道了大概的流程。本篇为部署备忘录。 经过的大环节有:修改树莓派/boot/cmdline.txt甚至/cmd/config.txt里面的集群相关设置,把cgroup驱动enable好。swap关掉。这些都是所有集群内…

比较几种热门Hybrid App前端框架

作为一种既能够在原生应用程序环境中运行,也能够在 Web 浏览器中运行的应用程序,Hybrid App 主要使用 Web 技术进行开发,如 HTML、CSS 和JavaScript,并使用一个中间层将其封装在原生应用程序中。随着技术的持续推进,Hy…