文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106546064

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

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

为了达到这个目的,我们必须首先了解在之前索引中的 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/ 找到一个如下文件:

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

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

创建 enrich index

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

点击上面的 Override settings 链接:

点击 Apply 按钮:

点击上面的 Import 按钮:

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

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

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

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

GET _cat/indices

上面显示有一个新的 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

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

我们可以通过 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:

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

找出飞机制造商的分布

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

飞机机龄分布

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

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

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

Graph

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

点击 Create graph:

点击 Select a data source:

选择 flights* :

点击 Add fields:

添加 fields:

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

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

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

使用 Elastic Stack 分析地理空间数据 (二)的更多相关文章

  1. 使用 Elastic Stack 分析地理空间数据 (一)

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106531939 随着人类在不断地探索空间,地理空间数据越来越多. 收集信息的速度以及 ...

  2. ES 集中式日志分析平台 Elastic Stack(介绍)

    一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 File ...

  3. 集中式日志分析平台 Elastic Stack(介绍)

    一.ELK 介绍 二.ELK的几种常见架构 >>ELK 介绍<< ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析 ...

  4. Elastic Stack(ElasticSearch 、 Kibana 和 Logstash) 实现日志的自动采集、搜索和分析

    Elastic Stack 包括 Elasticsearch.Kibana.Beats 和 Logstash(也称为 ELK Stack).能够安全可靠地获取任何来源.任何格式的数据,然后实时地对数据 ...

  5. Elastic Stack之Logstash进阶

    Elastic Stack之Logstash进阶 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用GeoLite2和logstash 过滤插件的geoip案例 1>. ...

  6. Elastic Stack之搜索引擎基础

    Elastic Stack之搜索引擎基础 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎概述 1>.什么是搜索引擎 搜索引擎(Search Engine)是指根 ...

  7. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

  8. Elastic Stack之ElasticSearch分布式集群yum方式搭建

    Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...

  9. Elastic Stack 笔记(八)Elasticsearch5.6 Java API

    博客地址:http://www.moonxy.com 一.前言 Elasticsearch 底层依赖于 Lucene 库,而 Lucene 库完全是 Java 编写的,前面的文章都是发送的 RESTf ...

随机推荐

  1. # 8 快速入门 dubbo

    8 快速入门 dubbo 所需资料 注册中心 Zookeeper 安装 zookeeper 官方推荐使用 zookeeper 注册中心: 注册中心负责服务地址的注册与查找,相当于目录服务: 服务提供者 ...

  2. php命名空间粗解

    // 创建命名空间Articlenamespace Article;class Comment { } // 创建命名空间MessageBoardnamespace MessageBoard;clas ...

  3. php九个很有用的功能

    1.任意数目的参数 // 两个默认参数的函数 function foo($arg1 = '', $arg2 = '') { echo "arg1: $arg1\n"; echo & ...

  4. Linux使用netstat查看网络状态

    查看本机的网络状态.使用netstat查看网络状态.显示系统端口使用情况.UDP类型的端口.TCP类型的端口.只显示所有监听端口.只显示所有监听tcp端口. 命令使用举例 命令 说明 netstat ...

  5. 设置Windows Server 2022、Win10、Win11自动登录的简单方法-OK

    这里介绍自己从使用 Windows Server 2003 到 Windows Server 2022 一直都在使用的自动登录系统的方法,屡试不爽.网上讨论的方法太繁琐,所以共享出来,供大家参考.该方 ...

  6. ApacheCon 首次亚洲大会 —— Incubator 专场介绍

    Apache 孵化器即为想要进入 Apache 软件基金会(ASF)的项目提供相关帮助和服务.它帮助进入的项目(称为"podling")采用 Apache 的治理风格,并引导使用 ...

  7. 完成 DolphinScheduler 新手任务赢好礼活动 | 倒计时3 天

    想轻松参与 DolphinScheduler 项目贡献吗? 想获得 500 元京东购物卡吗? 参与活动,有机会得更多活动奖励! 活动截止至6月30日 了解更多详情: 在你参与 DolphinSched ...

  8. Luogu2869 [USACO07DEC]美食的食草动物Gourmet Grazers (贪心,二分,数据结构优化)

    贪心 考场上因无优化与卡常T掉的\(n \log(n)\) //#include <iostream> #include <cstdio> #include <cstri ...

  9. Linux 06 用户组管理

    参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 概述 每个用户都 ...

  10. redis-hash命令

    一.HDEL key field [field ...] 从 key 指定的哈希集中移除指定的域.在哈希集中不存在的域将被忽略. 如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将 ...