Kibana:在 Kibana 中定制 Regional Map

162 篇文章 170 订阅

细心的开发者发现在 Kibana 中已经移除了 Regional Map 的可视化,取而代之是使用 Map 可视化。它也可以实现同样的功能。在有些情况中,我们需要定制自己的 Regioanl Map,这里可能是由于我们需要更加精确的地图,或者是纠正有些地图的错误。那么我们该如何定制我们需要的Regional Map呢?

在开始我们的讲解之前,我们先来了解几个概念:

  • geojson:一个 json 文件,其中包含以标准化格式指定的一个或多个几何形状
  • geoshape:代表经度和纬度以形成多边形的点数组
  • regionmap:Kibana 中的可视化视图,用于显示聚合的结果,这些结果已存储到几何形状中,然后进行了地理映射

 

定制 Regional Map

在开始定制我们的地图之前,我们可以寻找一个可以供我们定制的地图数据。在今天的例子中,我们先以美国的州地图为例来展示。我们可以到地址https://maps.elastic.co/v7.6/index.html?locale=en#file/usa_states

上面显示的是美国各个州的 regional map 数据。我们点击上面的 Download GeoJSON 文件,并保持下来这个文件 usa_states_v1.geo.json。我们把这个文件存于自己电脑的一个文件目录中。

为了了解这个文件的组成,我使用一个在线的 JSON 展示工具 http://jsonviewer.stack.hu/。我们把下载下来的文件粘贴到该网站,并重新格式化:

从上面的显示我们可以看出来:在这个 JSON 数据文件中,它定义了一个类型为 MultiPolygon 的 geometry 数据。在  coordinates里,它定义了该区域的坐标信息。这个信息是一个数组,并且这些坐标连起来形成一个 MultiPolygon 的地图形状,并形成以前区域。如果我我们对这个区域的定义不太满意,我们可以用我们自己的数据来修改,或者增加一个新的区域到这个数组里去。这个区域的相关信息被定义于 properties 里。在今天的实验中,我们来使用其中的叫做 postal 的属性。

 

提供 Geojson 文件

我们需要做的是从 Web 服务器提供 geojson 文件。 在这篇文章中,我们保持简单,并使用 npm http-server 中的这个很棒的小工具:

 npm install http-server -g

我们使用上面的命令来安装 http-server。

通过 shell 从 usa_states_v1.geo.json 所在的同一目录中运行此命令;

http-server --cors='*' -p 8000

在我们的 shell 可以看到如下类似的输出:

$ http-server --cors='*' -p 8000
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8000
  http://192.168.43.220:8000
Hit CTRL-C to stop the server

重上面,我们可以看到 http 服务器已经被成功运行起来了。我可以在我们的浏览器中查看到 usa_states_v1.geo.json:

在 Kibana 中配置源

我们打开 config/kibana.yml 文件,并增加如下的配置:

map.regionmap:
  includeElasticMapsService: true
  layers:
     - name: "United States"
       url: "http://192.168.43.220:8000/usa_states_v1.geo.json"
       attribution: "INRAP"
       fields:
          - name: "postal"
            description: "postal-name"

在上面我们的 url 必须指向我们在上面提供的 JSON 文件服务器的地址。上面的 postal 是我们在 JSON 文件中看到的 property。修改完后,重新运行我们的 Kibana。更多关于这个配置的详细信息,请参阅链接 “Add Kibana user setting”。

添加索引

为了能够检验我们的 regional map 是否工作整个,我们在 Kibana 的 Dev tools 里使用如下的 Bulk API 来创建几个文档:

POST _bulk
{ "index" : { "_index" : "twitter"} }
{"user": "user1" postal": "VA"}
{ "index" : { "_index" : "twitter"} }
{"user": "user2" postal": "WV"}
{ "index" : { "_index" : "twitter"} }
{"user": "user3" postal": "NY"}

上面的索引非常之简单。在上面含有一个 postal 字段。

我们需要为刚才创建的索引建立一个 index pattern:

点击 “Create inde pattern” 按钮:

点击 Next 按钮:

点击 Create index pattern:

怎样就创建了我们的 twitter* index pattern。

创建 Regional map

打开Kibana, 并选择Visualization:

点击 Create visualization:

点击 Maps:

点击 Add layer:

选择 Configured GeoJSON

选择 United States,并点击 Add layer:

点击 +

点击 Join:

做上面的选择,并点击 Save & close

在上面我们可以看出来有三个文档显示在地图的三个州上面。

 

参考:

【1】https://www.elastic.co/blog/custom-region-maps-in-kibana-6-0

【2】https://www.elastic.co/blog/region-maps-gauge-kibana

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值