Elasticsearch 地理空间搜索 - 远超 OpenSearch

作者:来自 Elastic Nathan_Reese

2021 年,OpenSearch 和 OpenSearch Dashboards 开始作为 Elasticsearch 和 Kibana 的分支。 尽管 OpenSearch 和 OpenSearch Dashboards 具有相似的血统,但它们不提供相同的功能。 在分叉时,只能克隆开源许可的功能。 这给 OpenSearch 留下了一部分功能。 自分叉以来,这种功能差距已经扩大。 让我们探索如何只有 Elasticsearch 和 Kibana 才能提供最快的地图、缩短上市时间、提供更多见解并适应未来。 不要让 OpenSearch 的限制限制你。

使用矢量切片提供快速地图

地图提供了一种直观的方式来显示大量数据,从数万个点,到数以千计的复杂政治边界,再到数以万计的聚合分组 - 全部都在同一张地图上! 将所有这些数据传输到你的网络浏览器是一个耗时的过程。 幸运的是,Mapbox 在 2010 年代初通过引入矢量切片(vector tiles)解决了这个问题。

矢量图块通过以下方式为你的地图提供快速加载:

  1. 将请求分成更小的部分。 你的地图视口被分成更小的方形图块。 每个图块都作为自己的请求获取,从而并行数据加载。
  2. 向浏览器发送更少的数据。 复杂的几何图形被简化,以删除在请求的缩放级别上不可见的细节。 例如,政治边界可能沿着河流的轮廓。 虽然边界包含数千个顶点以准确地遵循河流的路径,但当该级别的细节不可见时,这些顶点将被删除。
  3. 使用节省空间的数据序列化。 数据通常以文本形式发送到你的浏览器。 例如,当坐标 -77.036379543 作为文本发送时,每个数字都作为单个字符发送。 矢量切片使用 Google 协议缓冲区并将数字编码为 16 位或 32 位浮点数,从而显着减少空间。

Elasticsearch 提供矢量切片搜索 API(vector tile search API),以二进制 Mapbox 矢量切片形式返回搜索结果。 与基于文本的 _search API 相比,加载速度快得惊人:

Kibana 中的矢量切片 (vector tiles):使地理分析变得平滑

你需要快速地图,并且只有 Elasticsearch 可以提供二进制 Mapbox 矢量切片形式的搜索结果。

使用 Elastic Maps Service 和 Kibana 地图缩短上市时间

Elastic 地图服务

参考地图为地理数据提供了重要的背景; 政治边界(如国家边界)、自然特征(如河流)以及人造特征(如道路)。 Elastic Maps Service 提供参考底图,为你在 Kibana 中的地理空间可视化提供支持。

在专用网络上运行 Elastic Stack? 没问题,我们为你服务。 只有 Elastic 地图服务可以托管在本地网络上。

Kibana 地图

立即将你的地理数据与 Kibana Maps 结合使用。 使用多个图层和索引在单个地图中显示所有数据。 绘制单个文档或使用聚合来绘制任何数据集,无论有多大。 使用时间滑块对时空数据进行动画处理。 自定义每个图层以突出显示有意义的维度。 跨层搜索以仅关注你想要的数据。 将自由文本搜索与基于字段的搜索相结合。 设置时间过滤器以按时间限制图层。 在地图上绘制多边形或使用要素的形状来创建空间过滤器。 过滤各个层以比较方面。 只有 Kibana 地图提供对 Elasicsearch 所有地理空间功能的实例访问。

此仪表板显示了别哈山火山喷发(umbre Vieja eruption)的影响。

通过 Geohex 网格和 Geo-line 聚合提供更多见解

聚合是一种重要的分析工具,用于将大量数据集分组并汇总为可使用的指标。

Geohex 网格聚合

聚合允许你将地理数据分组为几何区域,并比较和对比组间的指标。 六边形网格是一种流行的定义几何区域的机制,其中每个图块的面积在整个地球上大致相同,从而可以得到更相关的统计结果。 只有 Elasticsearch 提供直线和多边形的六边形空间分析。

该仪表板显示了纽约市教堂的分布。

地理线聚合

对于地理数据,每个数据点可以不仅仅是一个事件,每个数据点可以是一系列相关事件的一部分。 例如,单个 GPS 坐标提供车辆在某个时间点的位置,而一系列 GPS 坐标则显示车辆的路径。 只有 Elasticsearch 提供 Geo-line 聚合,允许你将点变成线,将单个事件的信息放大到更广阔的画面。

下图来自实时资产跟踪、可视化和警报教程,显示了波特兰市的公共交通巴士坐标。

通过读取模式适应未来

工作流程随着时间的推移而发展。 今天的关键内容可能会减弱相关性,而未使用的信息将成为明天决策的关键数据点。 读取模式使你的工作流程能够应对未来的挑战。

只有 Elasticsearch 提供带有运行时字段的读取模式。 运行时字段允许你创建在查询时评估的字段。 让我们通过一个示例来探索运行时字段。 Web 日志被引入 Elasticsearch。 Web 日志包含有关请求位置的地理空间信息,但该信息在写入时不会建立索引。 现在,我们需要运行地理空间搜索。 我们可以在查询中定义 geo_point 运行时字段并执行地理空间搜索,而无需重新索引网络日志。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜好儿AI周报Weekly(第9期)CES2024 AI产业大爆发 | Rabbit R1 | 3D-Fauna | OLED屏幕 | Genie | MagicVideoV2 | Magnific

各位观众朋友们大家好!我是被老板派去出差逛CES2024 拉斯维加斯消费电子展差点迷路回不来的阿喜。一起去看看这一周有什么新鲜事吧。 本期导读: 逛逛CES 2024消费电子展Rabbit R1人工智能设备三星AI机器人BallieLG无线透明OLED屏幕Portalgraph VR空间投…

jmeter和meterSphere如何使用第三方jar包

引用jar包语言使用的都是beanshell 问题起因:metersphere 接口自动化实现过程中,如何实现字符串加密且加密方法依赖第三方库; 使用语言:beanshell脚本语言,java语言 使用工具:idea jmeter metersphere 1.…

如何分析测试任务及需求(附分析流程)

测试分析 确认测试范围 根据测试项目的不同需求,有大致几类测试项目类型:商户/平台功能测试、支付方式接入测试、架构调整类测试、后台优化测试、性能测试、基本功能自动化测试。 测试项目需要按照文档要求进行测试需求分析,并给出对应的输出…

【论文阅读 CIDR17】Self-Driving Database Management Systems

Self-Driving Database Management Systems MySummary ABSTRACT 之前的advisory tools来帮助DBA处理系统调优和物理设计的各个方面,都仍然需要人类对数据库的任何更改做出最终决定,并且是在问题发生后修复问题的反动措施reactionary measures 。 An …

Linux进程【2】进程地址空间(+页表详解哦)

fork 引言(程序地址空间)进程地址空间进程地址空间mm_struct 虚拟地址到物理地址的转化总结 引言(程序地址空间) 在之前的学习过程中,我们认识了内存与地址,并且了解了在程序地址空间中的基本分区&#xf…

three.js 使用 tweenjs绘制相机运动动画

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"…

SpringBoot默认配置文件

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot默认配置文件 📚个人知识库: Leo知识库,欢迎大家访问 1.前言☕…

离线安装jenkins:使用rpm安装包

目录 一、安装jdk1.8二、安装yum软件包三、下载rmp安装包四、安装jenkins的rpm安装包五、创建jenkins文件目录六、设置环境变量七、配置jdk位置八、配置Jenkins配置文件九、启动Jenkins十、访问Jenkins十一、安装Jenkins插件十二、解释jenkins目录十三、删除jenkins十四、结合m…

Android perfetto memory开源工具分析

目录 原理 官网链接 下载heap_profile producer_support.cc 本地编译 push heapprofd 工具使用 pb文件获取 打开*.pb文件 trace文件 提高系统CPU性能 拆解特定函数内存占用 环境配置 工具使用 修改heap_profile 脚本 原理 Android perfetto memory分析工具和ma…

Java项目:117SpringBoot动漫论坛网站

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 117SpringBoot动漫论坛网站 一、项目介绍 动漫论坛网站是由SpringBootMybatis开发的&#xff0c;旅游网站分为前台和后台&#xff0c;前台为用户浏览&#xff0c;后台进…

计算机组成原理之计算机的性能指标和数制与编码

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

pringBoot教程(十) | SpringBoot集成JdbcTemplate

SpringBoot教程(十) | SpringBoot集成JdbcTemplate 1. JdbcTemplate概述 经过了前面的几篇文章&#xff0c;我们几乎讲解完毕了SpringBoot中前端控制器中的一些操作&#xff0c;体验到SpringBoot为我们使用框架所带来的便捷。前面文章中的所有案例&#xff0c;总共只引入了一…

如何优化测试用例设计,节约时间?

进一步优化测试用例设计&#xff0c;不仅可以减少测试用例数量和冗余&#xff0c;还可以减少执行时间&#xff0c;缩短测试周期&#xff0c;更快发现和修复问题&#xff0c;提高测试的质量。而没有优化的测试用例设计可能会导致冗余和重复的测试用例&#xff0c;增加了测试人员…

虾皮广告数据:​如何利用广告数据优化虾皮(Shopee)销售业绩

在虾皮&#xff08;Shopee&#xff09;平台上&#xff0c;广告数据对于卖家来说是至关重要的&#xff0c;它可以帮助卖家了解广告的效果并进行相应的优化。通过监控和分析这些广告数据&#xff0c;卖家可以更好地理解广告的表现&#xff0c;调整广告策略&#xff0c;提高广告的…

golang 反序列化出现json: cannot unmarshal string into Go value of type model.Phone

项目场景&#xff1a; 今天在项目公关的过程中&#xff0c;需要对interface{}类型进行转换为具体结构体 问题描述 很自然的用到了resultBytes, _ : json.Marshal(result)&#xff0c;然后对resultBytes进行反序列化转换为对应的结构体err : json.Unmarshal(resultBytes, &…

原生IP代理如何帮助跨境电商店铺做谷歌广告投放业务的?

随着全球化的发展&#xff0c;越来越多的电商店铺开始拓展跨境业务&#xff0c;而谷歌广告作为全球最大的广告平台之一&#xff0c;为跨境电商店铺带来了巨大的收益和商机。 然而&#xff0c;由于谷歌广告的地域限制和审查机制&#xff0c;店铺很难直接进行投放业务&#xff0…

Golang基础入门及Gin入门教程(2024完整版)

Golang是Google公司2009年11月正式对外公开的一门编程语言&#xff0c;它不仅拥有静态编译语言的安全和高性能&#xff0c;而 且又达到了动态语言开发速度和易维护性。有人形容Go语言&#xff1a;Go C Python , 说明Go语言既有C语言程序的运行速度&#xff0c;又能达到Python…

力扣|2023华为秋招冲刺

文章目录 第一关&#xff1a;2023 年 7 月面试题挑战第二关&#xff1a;2023 年 6 月面试题挑战第三关&#xff1a;2023 年 5 月面试题挑战 第一关&#xff1a;2023 年 7 月面试题挑战 class Solution { public:void reverseWord(vector<char>& s,int l,int r){for(i…

YOLOv8目标检测中数据集各部分的作用

自学答疑使用&#xff0c;持续更新… 在目标检测任务中&#xff0c;通常将整个数据集划分为训练集&#xff08;training set&#xff09;、验证集&#xff08;validation set&#xff09;和测试集&#xff08;test set&#xff09;。这三个数据集在训练和评估过程中具有不同的…

mysql8 源码编译 客户端连接运行 报段异常解决

mysql8 源码编译 客户端连接运行 报段异常解决。解决方案&#xff1a;删除之前编译的文件。先安装libncurses-dev依赖&#xff0c;在重新编译。原因&#xff1a;第一次编译没有libncurses-dev依赖&#xff0c;编译告警&#xff0c;再次编译有缓存&#xff0c;没有引入声明头文件…