Observability:使用 Elastic Stack 分析地理空间数据

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在今天的文章中,我们将参考之前的文章 “如何使用 Elasticsearch ingest 节点来丰富日志和指标”。我们可以利用 Elasticsearch ingest 节点来更加丰富我们的数据,并对这些数据做更进一步的的分析。

更多文章查看独家下载 | 《Elasticsearch 八大经典应用》独享大咖场景化应用的秘密>>>

在之前的文章 “Observability:使用 Elastic Stack 分析地理空间数据 (一)”,我详述了如何从 OpenSky Network API 接口把数据导入到 Elasticsearch,并对这些数据进行可视化分析。也许针对很对的情况这个已经很满足了,因为它确实可以帮我们从很多实时数据中提取很多有用的东西。

在今天的文章中,我们将参考之前的文章 “如何使用 Elasticsearch ingest 节点来丰富日志和指标” 。我们可以利用 Elasticsearch ingest 节点来更加丰富我们的数据,并对这些数据做更进一步的的分析。

image.png

为了达到这个目的,我们必须首先了解在之前索引中的 icao 字段。这个字段的意思是:

ICAO 机场代码或位置指示器是由四个字母组成的代码,用于指定世界各地的机场。 这些代码由国际民用航空组织定义并发布在国际民航组织7910号文件:位置指示器中,供空中交通管制和航空公司运营(例如飞行计划)使用。

我们之前的每个文档是这样的:


{
  "velocity" : 0.0,
  "icao" : "ad0851",
  "true_track" : 264.38,
  "time_position" : 1591190152,
  "callsign" : "AAL2535",
  "origin_country" : "United States",
  "position_source" : "ADS-B",
  "spi" : false,
  "request_time" : 1591190160,
  "last_contact" : 1591190152,
  "@timestamp" : "2020-06-03T13:16:03.723Z",
  "on_ground" : true,
  "location" : "32.7334,-117.2035"
}

另外,我们可以在地址 https://opensky-network.org/datasets/metadata/ 找到一个如下文件:

image.png

在这里,我们可以找到一个叫做 aircraftDatabase.csv 的文件。它里面的内容如下:

image.png

在上面的表格中,我们发现有一个叫做 icao24 的字段。这个字段和我们之前的文档可以进行关联,从而我们可以得到更多关于某个航班的更多信息。

创建 enrich index

由于下载的文档时一个是一个 csv 的文件。我们可以使用 data visualizer 来导入。

image.png

image.png

点击上面的 Override settings 链接:
image.png

点击 Apply 按钮:
image.png

点击上面的 Import 按钮:
image.png

我们把这个索引的名字称作为 aircraft。点击 Advaned:
image.png

再次确认 mapping,如果没有问题的话,点击 Import 按钮:
image.png

由于这个文件比较大,所以需要一点时间来进行导入:
image.png

等完成后,我们可以在 Elasticsearch 中找到一个叫做 aircraft 的索引:
image.png

上面显示有一个新的 aircraft 的索引生成了。

创建 Enrich policy

接下来,我们来创建 enrich policy。它告诉我们如何丰富数据。在 Kibana 中打入如下的命令:


PUT /_enrich/policy/flights_policy
{
  "match": {
    "enrich_fields": [
      "acars",
      "adsb",
      "built",
      "category_description",
      "engines",
      "first_flight_date",
      "icao_aircraft_type",
      "line_number",
      "manufacturer_icao",
      "manufacturer_name",
      "model",
      "modes",
      "notes",
      "operator",
      "operator_callsign",
      "operator_iata",
      "operator_icao",
      "owner",
      "reg_until",
      "registered",
      "registration",
      "seat_configuration",
      "serial_number",
      "status",
      "test_reg",
      "type_code"
    ],
    "indices": [
      "aircraft"
    ],
    "match_field": "icao"
  }
}

我们使用 execute enrich policy API 为该策略创建enrich索引:

POST /_enrich/policy/flights_policy/_execute

接着,我们创建一个叫做 flights_aircraft_enrichment 的 pipeline:


PUT /_ingest/pipeline/flights_aircraft_enrichment
{
  "description": "joins incoming ADSB state info with richer aircraft metadata",
  "processors": [
    {
      "enrich": {
        "field": "icao",
        "policy_name": "flights_policy",
        "target_field": "aircraft"
      }
    }
  ]
}

到此为止,我们已经成功地创建了 丰富策略。接下来,我们将展示如何使用这个 pipeline 来丰富我们的数据。

丰富数据

为了能够使用我们上面定义好的 pipeline,我们重参考之前的文章 “Observability:使用 Elastic Stack 分析地理空间数据 (一)”里的 fligths_logstash.conf 文件,并修改如下的 output 部分:


output {
    stdout { 
        codec => rubydebug
    }
 
    elasticsearch {
        manage_template => "false"
        index => "flights"
        # pipeline => "flights_aircraft_enrichment"
         hosts => "localhost:9200"
    }
}

我们把上面的这一行的注释拿掉:

# pipeline => "flights_aircraft_enrichment"

这样变成了:

output {
    stdout { 
        codec => rubydebug
    }
 
    elasticsearch {
        manage_template => "false"
        index => "flights"
        pipeline => "flights_aircraft_enrichment"
         hosts => "localhost:9200"
    }
}

在启动 Logstash 之前,我们可以先删除之前的 flights 索引:

DELETE flights

再接着执行如下的命令:

PUT flights
{
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "baro_altitude": {
        "type": "float"
      },
      "callsign": {
        "type": "keyword"
      },
      "geo_altitude": {
        "type": "float"
      },
      "icao": {
        "type": "keyword"
      },
      "last_contact": {
        "type": "long"
      },
      "location": {
        "type": "geo_point"
      },
      "on_ground": {
        "type": "boolean"
      },
      "origin_country": {
        "type": "keyword"
      },
      "position_source": {
        "type": "keyword"
      },
      "request_time": {
        "type": "long"
      },
      "spi": {
        "type": "boolean"
      },
      "squawk": {
        "type": "long"
      },
      "time_position": {
        "type": "long"
      },
      "true_track": {
        "type": "float"
      },
      "velocity": {
        "type": "float"
      },
      "vertical_rate": {
        "type": "float"
      }
    }
  }
}

重新运行 Logstash:

sudo ./bin/logstash -f fligths_logstash.conf

我们在 Kibana 中检查 flights 的 mapping:

GET flights/_mapping

我们可以看到一些新增加的各个新字段:

image.png

我们可以通过 search:

  "_source" : {
          "aircraft" : {
            "owner" : "Wells Fargo Trust Co Na Trustee",
            "reg_until" : "2021-04-30",
            "modes" : false,
            "built" : "1984-01-01",
            "acars" : false,
            "manufacturer_icao" : "BOEING",
            "serial_number" : "23018",
            "manufacturer_name" : "Boeing",
            "icao_aircraft_type" : "L2J",
            "operator_callsign" : "GIANT",
            "operator_icao" : "GTI",
            "engines" : "GE CF6-80 SERIES",
            "icao" : "a8a763",
            "registration" : "N657GT",
            "model" : "767-281",
            "type_code" : "B762",
            "adsb" : false
          },
          "true_track" : 272.81,
          "velocity" : 5.14,
          "spi" : false,
          "origin_country" : "United States",
          "@timestamp" : "2020-06-04T10:41:00.558Z",
          "request_time" : 1591267250,
          "time_position" : 1591267168,
          "last_contact" : 1591267168,
          "callsign" : "GTI165",
          "icao" : "a8a763",
          "location" : "39.0446,-84.6505",
          "on_ground" : true,
          "position_source" : "ADS-B"
        }
      }

我们可看到一个叫做 aircraft 的字段,它含有这个飞机所有被丰富的信息。

运用 Kibana 分析数据

找出前10的飞机型号

因为有新的字段进来,所以我们必须重新创建新的 inde pattern:
image.png

我们可以看到最多的是 PC-12/47E 这个机型。

找出飞机制造商的分布

image.png

我们看到 BOING 公司的市场份额是最大的。AIRBUS 处于第二的位置。

飞机机龄分布

image.png

我们可以看出来最多的飞机是2019年生产的。

飞机机型和飞行高度的关系

image.png

可以看出来 A320-214 飞机飞的是最高的。

Graph

运用 Graph 来找出数据直接的关系。如果你对 Graph 还不是很了解的话,请参阅我之前的教程 “Elastic Graph 介绍”。

image.png

点击 Create graph:
image.png

点击 Select a data source:

image.png

选择 flights* :
image.png

点击 Add fields:
image.png

添加 fields:
image.png

我们需要保持这个 graph。然后进行搜索:
image.png

从上面,我们可看出来 BOING 和我们想要的各个字段之间的关系。

我们从收集的数据可以有更多的其它的分析。在这里,我就不一一枚举了。你们可以做任何你想要的分析。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
18天前
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
18天前
|
数据可视化 数据挖掘 关系型数据库
R语言中的地理空间数据分析
【4月更文挑战第26天】R语言在地理空间数据分析中发挥着关键作用,拥有如"sp"、"sf"和"rgdal"等扩展包。
|
18天前
|
存储 数据挖掘 数据处理
地理空间数据分析与NumPy的高效融合
【4月更文挑战第17天】本文探讨了地理空间数据与NumPy的高效结合在数据分析中的应用。地理空间数据具有多维性、空间相关性和复杂性,NumPy通过提供高效的数据存储、强大的数学运算及灵活的数据处理,应对这些挑战。实践案例展示了如何使用NumPy进行坐标处理、统计分析和滤波等,揭示数据规律。未来,随着数据增长和领域拓展,NumPy在地理空间数据分析中的作用将更加显著,期待更多创新方法应对新挑战。
|
8月前
|
存储 数据可视化 数据管理
Ganos三维引擎系列(三):BIM数据管理与可视化功能解析
本文介绍了阿里云多模态时空数据库Ganos三维引擎在BIM数据管理中的应用。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型(SFMesh)用于存储带有语义的类BIM精细化三维模型,同时提供了空间索引、分析算子、导入工具、可视化支撑等功能,本文详细介绍表面网格模型应用于IFC格式的BIM数据管理与可视化等功能。
|
12月前
|
存储 机器学习/深度学习 自然语言处理
大数据数据存储的搜索引擎Elasticsearch的基本操作(含API使用)的基本聚合的Matrix聚合
大数据数据存储的搜索引擎Elasticsearch是一种常用的全文搜索引擎,支持对文本数据的实时搜索和分析。
94 0
|
存储 监控 数据可视化
10 个最佳地理空间数据分析 GIS 软件 上
10 个最佳地理空间数据分析 GIS 软件 上
321 0
10 个最佳地理空间数据分析 GIS 软件    上
|
SQL 数据可视化 安全
10 个最佳地理空间数据分析 GIS 软件 下
10 个最佳地理空间数据分析 GIS 软件 下
327 0
10 个最佳地理空间数据分析 GIS 软件 下
|
数据采集 存储 数据可视化
IP地址分布地图可视化—Elastic Stack 实战手册
本文将介绍如何基于 Elasticsearch + Kibana 实现 IP 地址分布地图可视化
1254 0
IP地址分布地图可视化—Elastic Stack 实战手册
|
存储 编解码 JSON
Elastic Stack 实现地理空间数据采集与可视化分析
如何使用 Elastic Stack 来收集这些地理空间位置信息,并对它们进行可视化化分析。
2390 0
Elastic Stack 实现地理空间数据采集与可视化分析
|
数据采集 应用服务中间件 API
【最佳实践】ingest对异源数据结构化处理,并由Elastic Stack实现可观测性分析
本文将讲述如何运用Elasticsearch的 ingest 节点实现数据结构化,并对数据进行处理。
1528 0
【最佳实践】ingest对异源数据结构化处理,并由Elastic Stack实现可观测性分析