带你读《Elastic Stack 实战手册》之80:——4.2.6.运用Elastic Stack分析COVID-19数据(3)

简介: 带你读《Elastic Stack 实战手册》之80:——4.2.6.运用Elastic Stack分析COVID-19数据(3)

《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.6.运用Elastic Stack分析COVID-19数据(2) https://developer.aliyun.com/article/1225616



解析信息

 

在上面我们已经很成功地把我们的信息转换为我们所希望的数据类型。接下来我们来使用 grok来解析我们的数据。grok 的数据解析,基本上是一种正则解析的方法。我们首先使用Kibana所提供的 Grok Debugger 来帮助我们分析数据。我们将使用如下的 grok pattern 来解析我们的message:

 

%{NUMBER:lat:float},%{NUMBER:lon:float},'%{DATA:address}',%{DATA:city},',',%{DATA:country},%{NUMBER:infected:int},%{NUMBER:death:int}

image.png

我们点击 Grok Debugger,并把我们的相应的文档拷入到相应的输入框中,并用上面的 grok pattern 来解析数据。上面显示,它可以帮我们成功地解析我们想要的数据。显然这个被解析的信息更适合我们做数据的分析。为此,我们需要重新修改 pipeline:


PUT _ingest/pipeline/covid19_parser
{
  "processors": [
    {
      "remove": {
        "field": ["log", "input", "ecs", "host", "agent"],
        "if": "ctx.log != null && ctx.input != null && ctx.ecs != null && ctx.host != null && ctx.agent != null"
      }
    },
    {
      "gsub": {
        "field": "message",
        "pattern": "\"",
        "replacement": "'"
      }
    },
    {
     "grok": {
        "field": "message",
        "patterns": [
          "%{NUMBER:lat:float},%{NUMBER:lon:float},'%{DATA:address}',%{DATA:city},',',%{DATA:country},%{NUMBER:infected:int},%{NUMBER:death:int}"
          PUT _ingest/pipeline/covid19_parser
{
  "processors": [
    {
      "remove": {
        "field": ["log", "input", "ecs", "host", "agent"],
        "if": "ctx.log != null && ctx.input != null && ctx.ecs != null && ctx.host != null && ctx.agent != null"
      }
    },
    {
      "gsub": {
        "field": "message",
        "pattern": "\"",
        "replacement": "'"
      }
    },
    {
     "grok": {
        "field": "message",
        "patterns": [
          "%{NUMBER:lat:float},%{NUMBER:lon:float},'%{DATA:address}',%{DATA:city},',',%{DATA:country},%{NUMBER:infected:int},%{NUMBER:death:int}"
           ]
      }
    }        
  ]
}                  

 我们运行上面的 pipeline,并使用如下的命令来重新对数据进行分析:

POST covid19/_update_by_query?pipeline=covid19_parser

我们重新来查看文档:


image.png

在上面我们可以看到新增加的 country,infected,address 等等的字段。

 

添加location字段

 

在上面我们可以看到 lon 及 lat 字段。这些字段是文档的经纬度信息。这些信息并不能为我们所使用,因为首先他们是分散的,并不处于一个通过叫做 location 的字段中。为此,我们需要创建一个新的 location 字段。为此我们更新 pipeline 为:

 

PUT _ingest/pipeline/covid19_parser
{
  "processors": [
    {
      "remove": {
        "field": ["log", "input", "ecs", "host", "agent"],
          "if": "ctx.log != null && ctx.input != null && ctx.ecs != null && ctx.host != null && ctx.agent != null"
            }
    },
    {
      "gsub": {
        "field": "message",
        "pattern": "\"",
        "replacement": "'"
      }
    },
    {
     "grok": {
        "field": "message",
        "patterns": [
          "%{NUMBER:lat:float},%{NUMBER:lon:float},'%{DATA:address}',%{DATA:city},',',%{DATA:country},%{NUMBER:infected:int},%{NUMBER:death:int}"
        ]
      }
    },
    {
      "set": {
        "field": "location.lat",
        "value": "{{lat}}"
      }
    },
    {
      "set": {
        "field": "location.lon",
        "value": "{{lon}}"
      }
    }              
  ]
}


在上面我们设置了一个叫做 location.lat 及 location.lon 的两个字段。它们的值分别是 {{lat}}及 {{lon}}。我们执行上面的命令。

 

由于 location 是一个新增加的字段,在默认的情况下,它的两个字段都会被 Elasticsearch 设置为 text 的类型。为了能够让我们的数据在地图中进行显示,它必须是一个 geo_point 的数据类型。为此,我们必须通过如下命令来设置它的数据类型:

 

PUT covid19/_mapping
{
  "properties": {
    "location": {
      "type": "geo_point"
    }
  }
}

执行上面的指令,我们再使用如下的命令来对我们的数据重新进行处理:

POST covid19/_update_by_query?pipeline=covid19_parser


等执行完上面的命令后,我们重新来查看我们的文档:


image.png

从上面我们可以看到一个叫做 location 的新字段。它含有 lon 及 lat 两个字段。我们同时也可以查看 covid19 的 Mapping。

GET covid19/_mapping

我们可以发现 Location 的数据类型为:

 "location" : {
     "type" : "geo_point"
  }


它显示 location 的数据类型是对的。

 

到目前为止,我们已经成功地把数据导入到 Elasticsearch 中。我们接下来针对 covid19 来进行数据分析。


《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.6.运用Elastic Stack分析COVID-19数据(4) https://developer.aliyun.com/article/1225614

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
人工智能 前端开发 Java
计算机语言:人与计算机沟通的桥梁
计算机语言:人与计算机沟通的桥梁
522 1
|
4月前
|
存储 编解码 缓存
《冬季游戏动态交互的底层逻辑优化全解析》
本文聚焦冬季游戏动态渲染优化,围绕动态积雪、实时气象、物理交互、地形形变及间接光影表现五大核心方向展开。针对初期全场景动态效果导致的帧率卡顿、服务器负载过高问题,提出“交互优先级矩阵”“地形-气象联动模型”“预计算+实时插值”等创新策略,通过核心场景高精度渲染、非核心场景逻辑简化与资源复用,实现动态元素自然呈现与性能稳定的平衡。优化后,主流设备帧率稳定在60帧以上,多人联机延迟可控,玩家沉浸感显著提升。文章结合实战案例拆解底层优化逻辑,为冬季游戏动态渲染提供兼具实用价值与独特视角的进阶方法论,彰显“取舍与协同”的渲染核心思维。
176 0
|
5月前
|
搜索推荐 前端开发 UED
多行业企业官网模板资源| 0代码搭建下载+高性能PC/移动端适配下载
在数字化时代,零代码建站平台与多行业模板让企业无需技术背景也能快速搭建专业官网。成本低、周期短、易维护,支持跨设备适配,助力中小企业高效实现线上转型。源码演示:m.jcedus.top
|
弹性计算 分布式计算 监控
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
542 5
|
存储 安全 物联网
计算机网络的类型
本文介绍了网络的分类,涵盖按覆盖范围(PAN、LAN、MAN、WAN)、使用场景(公网、外网、内网)、传输介质(有线、无线)、特殊类型(VLAN、SAN、网络桥接、接入网)及拓扑结构(总线型、星型、树型、环型、网状型)和交换方式(电路交换、报文交换、分组交换)等,详细阐述了各类网络的特点和技术。
1592 2
|
传感器 监控 安全
物联网(IoT):定义、影响与未来
物联网(IoT):定义、影响与未来
2234 3
|
机器学习/深度学习 人工智能 自然语言处理
ChatGPT的名字由
【10月更文挑战第13天】
624 0
阿里云短信服务的计费方式、规则和欠费说明_短信服务
阿里云短信服务的计费方式、规则和欠费说明_短信服务,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
1170 0
|
算法 程序员
游戏中的常见概率设计分析
游戏中的常见概率设计分析
|
开发框架 关系型数据库 MySQL
体检中心信息管理系统的设计与实现(论文+源码)_kaic
对于当代社会的人来说,生病是每一个人都避不开的话题。随着生活负担和工作压 力的加重,越来越多的人健康状态逐渐下滑。 随着人们对自己的健康问题越来越重视, 每年都会有许多人进行定期体检关注自己的健康状态。而我国是一个人口大国,人口基 数较大,虽然全国各地都开设有许多体检中心。但随着体检人数的增多,体检中心的患 者数量会急剧增加,并且患者的体检需要时间,给体检中心的日常运营带来了较大负担。 因此,体检中心每天都十分忙碌,当患者生病需要健康检查时,到体检中心还需要排队 挂号, 十分浪费时间。 为了减少患者的等待时间,方便患者在体检中心预约挂号,本次选题为体检中心信 息管理系统设计与实现,将通过设计一

热门文章

最新文章