说明
根据elastic 公开课 来学习的 记录下加深映像
使用 Elastic Stack 监测COVID-19疫情爆发
体验地址
帐号:covid19
密码:chinav5
使用的 Elastic Stack 版本和环境如下
分析和展示丁香园数据
目标分析数据源是:
https://ncov.dxy.cn/ncovh5/view/pneumonia
这个也是我们最近一直在关注的关于中国的疫情公布平台
丁香园网页的数据被香港大学的 Isaac Lin 同学,通过他所开发的网络爬虫抓取加工后,用 API 的形式和 csv 数据文件的形式提供了出来,他的爬虫程序和结果数据给很多目前分析疫情的人带来了很大的帮助,有不少人去他的 blog 和 github 上点赞和评论的。
https://github.com/BlankerL/DXY-COVID-19-Data/tree/master/csv
导入数据并初始化索引
可以在 index name 中可以输入dxy-area-0412 作为本次新建的索引名称
然后删除默认的 Mapping 定义,输入下面的重新重定义的数据结构。
{
"@timestamp": {
"type": "date"
},
"continentEnglishName": {
"type": "keyword"
},
"continentName": {
"type": "keyword"
},
"countryEnglishName": {
"type": "keyword"
},
"countryName": {
"type": "keyword"
},
"provinceEnglishName": {
"type": "keyword"
},
"provinceName": {
"type": "keyword"
},
"province_confirmedCount": {
"type": "integer"
},
"province_curedCount": {
"type": "integer"
},
"province_deadCount": {
"type": "integer"
},
"province_suspectedCount": {
"type": "integer"
},
"province_zipCode": {
"type": "integer"
},
"cityEnglishName": {
"type": "keyword"
},
"cityName": {
"type": "keyword"
},
"city_confirmedCount": {
"type": "integer"
},
"city_curedCount": {
"type": "integer"
},
"city_deadCount": {
"type": "integer"
},
"city_suspectedCount": {
"type": "integer"
},
"city_zipCode": {
"type": "integer"
},
"level":{
"type": "keyword"
},
"location": {
"type": "geo_point"
},
"is_china": {
"type": "boolean"
},
"updateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
数据优化和及校准脚本
#维护is_china字段
POST dxy-area-m5/_update_by_query
{
"script":{
"lang": "painless",
"source": """
if (ctx._source.countryEnglishName == "China") {
ctx._source.is_china = true;
} else {
ctx._source.is_china = false;
}
"""
}
}
#维护 level 字段,对于中国的数据来说,如果省的名字是中国这就是国家级的统计数据
POST dxy-area-m5/_update_by_query
{
"script":{
"lang": "painless",
"source": """
if(ctx._source.provinceName == ctx._source.countryName){
ctx._source.level = "country"
} else {
if (ctx._source.cityName == null) {
ctx._source.level = "cn-hmt"
} else {
ctx._source.level = "province"
}
}
"""
}
}
#更新省的名字为国际代码
POST dxy-area-m5/_update_by_query
{
"script":{
"lang": "painless",
"source": """
if (ctx._source.provinceEnglishName == "Guangxi") {
ctx._source.provinceEnglishName = "Guangxi Zhuang Autonomous Region";
}
if (ctx._source.provinceEnglishName == "Hong Kong") {
ctx._source.provinceEnglishName = "HongKong";
}
if (ctx._source.provinceEnglishName == "Macao") {
ctx._source.provinceEnglishName = "Macau";
}
if (ctx._source.provinceEnglishName == "Neimenggu") {
ctx._source.provinceEnglishName = "Inner Mongolia";
}
if (ctx._source.provinceEnglishName == "Ningxia") {
ctx._source.provinceEnglishName = "Ningxia Hui Autonomous Region";
}
if (ctx._source.provinceEnglishName == "Taiwan") {
ctx._source.provinceEnglishName = "Taiwan Province";
ctx._source.provinceName = "台湾省 (中华人民共和国)";
}
if (ctx._source.provinceEnglishName == "Xizang") {
ctx._source.provinceEnglishName = "Tibet";
}
if (ctx._source.cityName == "境外输入人员") {
ctx._source.cityName = "境外输入";
}
"""
}
}
评论区