发布时间:2026/8/5 0:36:37
第五阶段 50 · geo 地理查询(geo_point / geo_distance) 50 · geo 地理查询geo_point / geo_distance阶段第五阶段 / 进阶可选业务涉及地理位置时ESgeo_point/geo_shapegeo_distance/geo_bounding_box| PostgreSQLPostGISgeography/ST_DWithin1. 概念存经纬度并按「距离/范围」检索就用地理类型类型用途geo_point一个点经纬度最常用geo_shape线/面/多边形等复杂形状常见查询geo_distance某点 N 公里内、geo_bounding_box矩形框内、geo_distance聚合/排序按距离排序、分环统计。2. PostgreSQL 对照-- PostGIS5km 内的门店SELECT*FROMstoresWHEREST_DWithin(geog,ST_MakePoint(:lon,:lat)::geography,5000);-- 按距离排序SELECT*,geog-ST_MakePoint(:lon,:lat)::geographyASdistFROMstoresORDERBYdistLIMIT10;ES 的geo_distance≈ST_DWithin按距离排序 ≈-排序。3. ES DSL3.1 mapping 写入PUT stores_idx { mappings: { properties: { name: { type: keyword }, location: { type: geo_point } } } } POST stores_idx/_doc { name: Store-1, location: { lat: 39.9042, lon: 116.4074 } }3.2 geo_distanceN 公里内 按距离排序GET stores_idx/_search { query: { bool: { filter: { geo_distance: { distance: 5km, location: { lat: 39.9, lon: 116.4 } } } } }, sort: [ { _geo_distance: { location: { lat: 39.9, lon: 116.4 }, order: asc, unit: km } } ] }3.3 geo_bounding_box矩形框内query: { geo_bounding_box: { location: { top_left: { lat: 40.1, lon: 116.2 }, bottom_right: { lat: 39.7, lon: 116.6 } } } }4. Spring Boot 实现ComponentpublicclassDoc50GeoQuery{AutowiredprivateElasticsearchClientelasticsearchClient;/** 某点 radiusKm 公里内的门店按距离升序 */publicListMapString,Objectnearby(StringindexName,doublelat,doublelon,doubleradiusKm)throwsIOException{SearchResponseMaprespelasticsearchClient.search(s-s.index(indexName).query(q-q.bool(b-b.filter(f-f.geoDistance(g-g.field(location).distance(radiusKmkm).location(l-l.latlon(ll-ll.lat(lat).lon(lon))))))).sort(so-so.geoDistance(gd-gd.field(location).location(l-l.latlon(ll-ll.lat(lat).lon(lon))).order(SortOrder.Asc).unit(DistanceUnit.Kilometers))),Map.class);returnresp.hits().hits().stream().map(Hit::source).filter(Objects::nonNull).collect(Collectors.toList());}}importco.elastic.clients.elasticsearch._types.SortOrder、...DistanceUnit。每个 hit 的距离在hit.sort()对应_geo_distance排序值里可取出。5. 坑与最佳实践经纬度顺序易错GeoJSON 数组是[lon, lat]对象是{lat, lon}——别写反。geo_distance放filter不需要打分放 filter 更快、可缓存。距离排序有成本每命中文档都算距离大结果集配合先用geo_distance过滤缩小范围。精度 vs 性能geo_distance有arc精确/plane快、近距离够用两种算法。复杂形状用geo_shape点用geo_point即可多边形/围栏才上geo_shape。

相关新闻

2026/8/5 0:36:37

第五阶段 49 · 安全:TLS、API Key、RBAC

49 安全:TLS、API Key、RBAC阶段:第五阶段 / 运维进阶 ES:传输加密、身份认证、最小权限授权 | PostgreSQL:SSL、用户与角色、权限控制1. 概念 Elasticsearch 生产安全通常是三层: TLS(传输加密&#xff0…

2026/8/5 0:36:37

网易云音乐NCM格式转换终极指南:3步快速解密音乐文件

网易云音乐NCM格式转换终极指南:3步快速解密音乐文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲无法在其他播放器播放而烦恼吗?ncmdump工具正是你需要的解决方案,…

2026/8/5 1:51:45

ET框架:C#全栈游戏开发,Actor模型与双端同构实战解析

1. 项目概述:为什么我们需要ET框架?在Unity游戏开发圈子里,尤其是涉及到中重度网络游戏时,一个经典的“痛点”会反复出现:服务端和客户端的割裂。我们通常用C#写Unity客户端,逻辑清晰,开发效率高…

2026/8/5 1:51:45

Unity DOTS性能优化实战:从ECS原理到移动端万人同屏

1. 项目概述:从面向对象到数据导向的思维跃迁如果你是一位Unity开发者,最近几年肯定没少听到“DOTS”和“ECS”这两个词。它们常常与“性能”、“多线程”、“面向数据”这些听起来很硬核的概念绑定在一起。我最初接触时也是一头雾水,感觉像是…

2026/8/5 1:51:45

Godot 4.0脚本语言选型指南:GDScript与C#深度对比与实战决策

1. 项目概述:为什么Godot 4.0的脚本选择如此重要?如果你刚接触Godot 4.0,面对项目创建时弹出的“首选脚本语言”选择框,可能会有点懵。GDScript和C#,选哪个?这可不是一个随便勾选就能完事的决定。它直接关系…

2026/8/5 1:51:45

Unity开发中LitJson的全面解析:从核心机制到实战优化

1. 项目概述:为什么Unity开发者绕不开LitJson?如果你在Unity项目里处理过JSON数据,大概率听说过或者用过LitJson这个库。它不像Unity官方后来推出的JsonUtility那样“根正苗红”,也不像功能强大的Newtonsoft.Json那样包罗万象&…

2026/8/5 1:51:45

氚云常用代码实战:表单流程自动化与业务逻辑定制指南

1. 从零开始:为什么需要关注氚云的“常用代码”?如果你正在使用氚云,或者正准备用它来搭建公司的业务系统,那你大概率会遇到一个场景:表单设计器里的那些标准组件和配置,好像有点不够用了。你想实现一个更智…

2026/8/5 1:46:45

Linux运维命令完整速查表(按场景查)

Linux运维命令完整速查表(按场景查)📌 使用建议:不要死记命令参数,先记住“这个场景用什么命令”,参数忘了随时 --help 或 man 命令 查看。一、文件与目录操作(每天高频)命令常用参数…

2026/8/3 21:14:30

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上,最难的不是翻过去,是孩子不想翻了。八月初了。这两个字,对三升四的家长来说,比任何闹钟都让人清醒。最近的家长群里,气氛明显不一样了。一升二的在关心兴趣班,二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…