使用 Elastic Stack 来分析奥运数据(三)
2022年2月24日 | by mebius
这是继上一篇文章 “使用 Elastic Stack 来分析奥运数据(二)” 的续篇。这是一个连续三篇文章的系列文章:
在之前的文章中,我详tgcode细地介绍了如何摄入奥运数据,并且可视化数据。在今天的练习中,我将使用 Maps 来可视化数据。
在我们的数据中,虽然我们没有经纬度数据,但是我们发现有一个叫做 NOC 的字段。它代表运动员来自那个国家。在我之前的文章 “Kibana:通过 Elastic Maps 中的全局行政区层为 IP 分析带来新见解”,我展示了如何使用行政区来展示数据。针对我们的奥运情况,我们可以展示一下奥运运动员分别在哪些国家。
参赛运动员分布
我们接上次的练习。在 Dashboard 中点击 Create visualization:
从上面我们可以看出来美国的颜色比较深,显示参加比赛的人员比较多。相反,在地球的有些地方,我们看到没有运动员或者较少的运动员参加奥运会。
点击上面的 Save & return:
从上面,我们可以看出来共有18853个美国人参加奥运会。这确实是一个比较大的数据。
金牌分别在哪些国家
有时,我们更关心这些金牌分布在哪些国家。由于 Maps 只能作用于索引上,而且它没有 filter 可以使用。那么我们该怎么办呢?一种办法是把 olympic 这个索引 reindex 成为另外一个索引,把所有金牌的文档放到另外一个索引中。
POST _reindex
{
"source": {
"index": "olympic",
"query": {
"match": {
"medal": "Gold"
}
}tgcode
},
"dest": {
"index": "olympic_gold_medals"
}
}
在上面,我们把数据 reindex 到一个叫做 olympic_gold_medals 里去。我们需要创建一个 view data。这样做的话,如果我们的数据发生改变,我们需要每次都要这么做。
我们另外一种方法是创建一个 alias:
POST _aliases
{
"actions": [
{
"add": {
"index": "olympic",
"alias": "medals",
"filter": {
"bool": {
"filter" : [
{
"term": {
"medal": "Gold"
}
}
]
}
}
}
}
]
}
那么这个 alias medals 将含有所有金牌的文档,比如我们查询:
GET medals/_count
它显示:
{
"count" : 13372,
"_shards" : {
"total" : 1,
"successful" :tgcode 1,
"skipped" : 0,
"failed" : 0
}
}
这个和我们使用 Discover 查看到的金牌数是一模一样的:
我们接下来需要为这个 alias 创建一个 data view:
这样我们就创建了一个叫做 medals 的 data view。
和之前一样,我们选择 Maps 来可视化数据:
从上面,我们可以看出来美国已经得了315块金牌。在世界的很多其它地方有的还没有金牌呢。
其实从地图上的数字我们就可以看到每个国家得了多少块金牌。 点击上面的 Save & return 按钮:
好了,今天的展示就到这里。希望大家对 Elastic Maps 有更多的认识和了解。
文章来源于互联网:使用 Elastic Stack 来分析奥运数据(三)
相关推荐: Elasticsearch:Rank feature query
在我之前的文章: Elasticsearch:运用 distance feature 查询来增强相关性 Elasticsearch:distance feature 查询 – 对靠近位置或时间点的文档提高相关性 我运用了distance_feature来针对位…