Elasticsearch:位置搜索介绍

文章介绍了Elasticsearch如何支持地理空间搜索,包括bounding_boxquery用于搜索矩形区域内的地址,geo_distancequery用于查找特定距离范围内的地址,以及geo_shapequery用于匹配复杂几何形状内的地址。这些查询对于基于位置的应用程序至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

Bounding box query

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

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

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

Geo_distance query

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

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

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

Geo_shape query

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值