基于Elasticsearch 的气象数据搜索系统设计与实现

作者: 尹常红 杨维发 胡雅超 袁文波

基于Elasticsearch 的气象数据搜索系统设计与实现0

摘要:随着气象科技的快速发展,气象数据显著增加。传统关系型数据库在处理海量气象数据时,面临搜索效率不高和查询灵活性不足等问题,这限制了气象数据的应用服务水平。针对海量数据高效便捷的搜索需求,本文设计并开发了一种基于Elasticsearch的气象数据搜索系统。本系统采用元数据管理和分词器等技术,划分不同应用场景,构建统一的气象资料搜索入口,提供高效可视化的信息搜索服务,实现武汉市各类气象数据的一键快速搜索,从而提升气象数据的综合应用能力。

关键词:Elasticsearch;分词器;气象数据;数据搜索;对象存储

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2025)04-0103-04 开放科学(资源服务) 标识码(OSID) :

0 引言

随着科技进步和社会发展,各行业与气象部门的协作交流日益密切,对气象服务产品的类型、服务手段和形式的要求不断提高,气象数据与各行业数据的融合应用需求日益迫切[1]。武汉市气象部门以气象服务需求为导向,初步建成了气象服务大数据平台,实现了数据的完整存储和信息的充分共享。该平台采集并存储了气象观测、预报、服务、背景资料以及部分行业专业数据。

然而,随着数据规模和复杂性的持续增加,如何高效检索和利用数据、挖掘数据价值、提升数据服务能力成为亟待解决的问题。武汉市气象部门传统的基于关系型数据库的检索方式已无法满足海量气象数据的应用需求。因此,本文研究智能搜索引擎技术,设计并开发了一种气象数据智能搜索系统,以实现各类气象数据的高效便捷搜索,并通过网页、图表、文档等形式可视化输出结果,为气象业务服务和科研提供支持。

1 系统设计与开发

本系统基于现有气象数据业务平台,采用Elastic⁃search技术,结合元数据管理方法和大数据处理架构的搜索引擎技术,全面整合气象“时间、地点、气象要素”等关键词信息,设计并实现多维度、智能化、便捷化的信息搜索及关联服务,提升气象数据应用的成效[2]。系统能够快速搜索数据资料、预报服务产品和气象专有名词,对结构化和非结构化信息进行抽取和建模,并利用中文分词等技术建立索引。通过时间、空间、地域等多维度关联分析,用户可以通过智能搜索快速访问所需信息,并获得个性化的参考排序结果[3]。

1.1 系统流程设计

基于 Elasticsearch的气象数据搜索系统主要包括后台处理业务和前端可视化业务两部分,其业务流程设计如图 1 所示。

后台处理业务首先根据用户输入的搜索词进行气象业务领域知识标签的匹配。对于未能匹配的搜索词,系统会自动更新标签库;对于匹配成功的搜索词,系统根据标签涉及的业务领域,自动识别适用的业务场景,并根据不同场景的数据形式,采用相应的业务处理规则,将检索结果转换为前端可识别的数据格式,最终通过统一的数据接口返回给前端。

前端可视化业务则根据后台返回的数据结果,调用不同的数据可视化组件进行展示。由于后台返回的数据格式可能存在较大差异,例如HTML、文本、单层级或多层级数据对象等,前端需要结合实际业务展示需求,采用不同的数据渲染方法,以实现查询结果的可视化。

1.2 系统场景设计

依托武汉市气象服务大数据平台,气象数据搜索系统设计三类资料搜索场景:数据资料、文件服务产品资料、气象专有名词。

数据资料搜索场景涵盖气象服务大数据平台内所有的气象数据资料,包括气象观测资料、模式资料、雷达卫星资料、行业数据资料等,检索初始结果展示所查资料的部分属性内容,例如资料来源、关键字、数据接口调用等内容。

文件服务产品资料搜索场景涵盖气象服务大数据平台内所有气象服务产品资料(例如DOC、PDF格式文件),检索初始结果展示所查产品资料的部分属性内容,例如资料来源、关键字、生成时间等内容。

气象专有名词搜索场景使用户能够便捷查询特定含义气象名词,包括实况类名词、预报类名词、服务统计类名词等。

在以上三类资料搜索场景的设计开发中,对于各场景的检索初始结果,系统还能通过时间、空间、地域等多维度关联分析提供个性化的参考排序,使用户能够通过智能搜索快速访问所需信息。

1.3 开发运行环境

系统采用 B/S 架构,基于 Linux 后台,使用 C# 和Java 语言进行开发,前端则采用 HTML5 实现,数据库系统为 Oracle 11g。系统运行环境依赖于基于 TCP/IP 协议的局域网,网络协议包括 HTTP、TCP/IP、FTP 和 UDP 等。数据库服务器运行 Linux 操作系统,前端应用部署于 Windows Server 2019 操作系统,用户端支持 Windows 和 Linux 系统。

1.4 关键技术

1.4.1 Elasticsearch

Elasticsearch 基于 Lucene 开源搜索引擎,能够轻松嵌入各种应用场景,实现全文索引和搜索。Elastic⁃search 具有分布式集群、数据索引和数据搜索等功能,可用于构建气象领域的专业词典以及实现个性化推荐。在系统设计与开发过程中,针对武汉市气象部门的数据规模和性能需求,设计了 Elasticsearch 分布式集群,包括节点设计和集群配置。

Elasticsearch 自带分布式管理模块,支持分布式搜索,能够快速进行集群的横向扩展和负载均衡,满足对海量气象数据进行高效检索和分析的需求。建立索引在 Elasticsearch 中非常便捷,并且可以将一个索引轻松分割成多个分片,均衡分布在集群的所有节点上[5]。Elasticsearch 的索引构建机制逻辑如图 2 所示。

1.4.2 开源中文分词

在构建气象领域专业词典时,根据不同业务领域分别构建词典,并在检索时动态加载相关词典,以提高分词的准确率[5]。

中文分词是中文信息处理中的重要环节,常见的中文分词模式包括精确模式、全模式和搜索引擎模式。精确模式试图将句子最为准确地切分,适合文本分析;全模式则将所有可能的词语扫描出来,速度较快;搜索引擎模式在精确模式的基础上,对长词进行再次切分,以提高召回率,适合于搜索引擎分词[6-7]。

中文词法分析工具包具有中文分词和词性标注功能。一些中文词法分析工具包提供基于机器学习的分词和词性标注功能,能够利用人工标注的语料库进行训练,具备较高的准确率和处理速度[8]。

1.4.3 前端可视化技术

前端可视化技术涵盖科学可视化、信息可视化、数据挖掘及人机交互等多个领域。针对气象数据的复杂性,采用交互式界面进行分析和展示,以整合认知与计算能力,为用户提供高效的气象数据采集和服务。处理气象数据时,常用的可视化分析方法包括二维、三维、多维、文本、网络信息和时空信息等。对于二维数据的展示,主要形式包括折线图、散点图、曲线图、饼图和条形图等[9]。在气象数据应用的可视化设计与开发过程中,常用的可视化工具如FusionCharts、Highcharts、WebGL等均可选择。多维数据则需要运用相关方法(如几何投影、图标和像素等) 进行映射、投影和转换,以实现降维和输出展示。

1.5 系统功能设计

基于Elasticsearch数据库技术,通过统一规范化的词条元数据结构,建立词条元数据与气象资料属性表、气象服务产品文件索引及气象专有名词属性表之间的映射关系。通过热词收集和扩展的方式建立索引,并搭建分布式Elasticsearch集群以提高可靠性,实现海量气象数据的高效检索。

1.5.1 元数据

元数据设计包括搜索词条元数据、气象资料元数据和气象专有名词元数据三类数据表的设计。

1) 搜索词元数据设计。搜索词元数据用于定义搜索词条信息,一方面用于管理热词等功能;另一方面为后续丰富和扩展词条检索功能提供基础数据支撑。搜索词元数据应至少包含词条名称、关联气象元数据类型、关联编号等基础字段信息。

2) 气象资料元数据设计。气象资料元数据用于定义各类气象资料信息,包括气象实况资料、预报资料、预警资料和气象服务产品等,其主要作用是管理平台基础气象资料信息,同时为搜索词元数据和词条索引等业务数据的创建提供基础支撑。气象资料元数据常见的字段包括资料类型、资料名称、资料编码和基础资料存储表等。

3) 气象专有名词元数据设计。气象专有名词元数据用于定义气象专有名词场景的基础数据,主要用于管理特定气象资料的处理逻辑与方式,同时也为搜索词元数据和词条索引等业务数据的创建提供支撑。气象专有名词元数据包括气象专有名词类型、关联气象要素、资料处理方式和资料关联站点等字段。

1.5.2 索引创建及更新

Elasticsearch是基于Lucene的全文检索系统,其底层引擎技术与Lucene一致[10]。索引创建过程主要包括词条输入及分词处理、词条元数据自匹配、气象资料相关元数据表匹配以及索引表创建等步骤。创建流程如图3所示。

1.5.3 主要数据库表

该系统设计依托于武汉市气象部门现有的业务系统,数据库设计需要在原有的Oracle数据库中增加以下3张数据表。

1.5.4 MinIO 对象存储

气象数据搜索系统涉及大量非结构化数据存储,例如图片、文档、视频等。本系统采用MinIO分布式对象存储方案。MinIO与Amazon S3云存储服务兼容,提供高性能的对象存储解决方案。相较于文件系统,对象存储的优势在于其更为扁平化的存储结构。当文件数量增加时,文件系统的存储性能可能会下降,而对象存储则不会出现此问题。

MinIO将数据分为多个桶,每个桶可以存储文件对象。桶的数量并不影响性能,即同样的数据量可以根据业务需要建立多个桶,使得每个桶中的数据量较少,或者只建立几个桶,使得每个桶中的数据量较多。

1) 文件目录设计原则。结构统一为:数据来源/数据类型/子类型(多级) /时间文件夹(按年、月、日、时进行多级划分) / 文件。

如果同一种类型(数据来源/数据类型) 下存在多种子类型且使用频率相同,可以考虑将这些子类型放在同一个文件夹中,以方便查找。例如,雷达数据包括反射率、径向速度、液态水含量等文件;本地化数据的常规观测数据包括地表温度、气压、湿度等要素文件;数值预报数据则包括温度、降水、风力等要素文件。

2) 文件存储目录原则。使用MinIO存储所有非结构化数据,并按部门建立桶。每个桶内按照资料分类和时间维度进行分级。

存储结构如下:部门桶/资料分类/资料名称/[时间](可选) /文件名.后缀名。

其中,时间为可选级别,支持按年(yyyy) 、按月(yyyyMM) 、按天(yyyyMMdd) 三种格式。例如:武汉国家基本气象观测站/ 雷达/雷达拼图/yyyyMMdd/文件名. 后缀名。

2 系统应用实例

基于Elasticsearch的气象数据搜索系统支持关键词搜索、条件搜索、空间搜索、时间搜索以及条件组合搜索,并能够根据时间和热度对查询结果进行排序和分页。在系统搜索界面中,用户输入关键词后,系统将自动判断应用场景,并根据不同场景返回相应的搜索结果和展示形式。例如,当输入“自动站”时,系统会根据数据资料场景返回来自不同来源的自动站查询结果(如图4所示) ;而输入“预报”时,系统会根据专有名词场景返回与“预报”相关的信息,包括7天预报、天气简报等(如图5所示) 。

经典小说推荐

杂志订阅