Kibana:如何使用 Kibana 可视化地理位置数据

在今天的文章中,我讲一下如何使用 Kibana 可视化地理数据。在我之前有些文章已经介绍过许多这方面的。在这篇文章中,给一些还不是很熟悉的开发者做个简单的介绍。首先我们必须清楚在我们的索引中,必须含有一个叫做 geo_point 类型的字段。比如:

GET kibana_sample_data_logs/_mapping
{
  "kibana_sample_data_logs" : {
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "alias",
          "path" : "timestamp"
        },
        ...
        "geo" : {
          "properties" : {
            "coordinates" : {
              "type" : "geo_point"
            },
            "dest" : {
              "type" : "keyword"
            },
            "src" : {
              "type" : "keyword"
            },
            "srcdest" : {
              "type" : "keyword"
            }
          }
        },
        ...
      }
    }
  }
}

这个是表示地理位置的。如果你对这个数据类型不是很熟的话,请参阅我之前的文章 “理解 Elastic Maps 中的 geohash 及其聚合”。

在今天的例子中,我将使用 Elastic Stack 7.13,并使用 Kibana 中自带的索引来进行展示。

 

准备数据

打开 Kibana:

这样在 Elasticsearch 中,我们可以看到一个叫做 kibana_sample_data_logs 的索引。这索引含有一个叫做 geo.coordinates 的 geo_point 数据类型:

 

可视化地理位置数据

接下来,我们使用 Maps 应用来对地理位置进行可视化:

在地图应用中,我们可以通过 Add layer 来添加不同的层。这些层的位置也可以从上到下进行调整,也可以选择让它们在不同的 zoom 级别可见或者不可见。这个都是我们可以控制的。

我们选择好时间过滤器。Kibana 会自动选择 geo.coordinates 作为 Geospatial field 的默认值。点击上面的 Add layer:

 

点击上面的 Save & close:

当我们把 zoom 的级别放大到5倍时,我们才可以看到上面的图。

接下来,我们添加另外一个 layer。我们想显示每个国家的情况。颜色的深浅代表该国文档数目的多少。

上面的  ISO 3166-1 alpha-2 code 指的是两个字母代表的国家编码,比如 US,CN, IN 等。我们其实可以在 kibana_sample_data_logs 里查看一下文档:

从上面,我们可以看出 geo.dest 及 geo.src 是以 ISO 3166-1 alpha-2 code 形式出现的。我们可以通过这个进行关联文档,并在 World Countries 地图中进行显示:

点击上面的 Save & close。这样我们就生产了两层的地图:

当然我们也可以针对它们取不同的名字。我们甚至可以调节它们的上下层关系。当我们把 zoom 级别调低时,我们只看到 World Countries 这个层。当我们把 zoom 级别调高至高于5时,我们可以看到文档的更为详细的情况。在这种情况下,World Countries 这个层就不见了:

 

好了。今天关于地理位置可视化的教程就先讲到这里。你们可以添加任意一个你们想要的层到地图应用中,并生成你们想要的地图应用。

相关推荐