在Elastic Stack 7.5.0的Elastic Maps中,使用GeoJSON+矩形过滤器

很抱歉投稿晚了(深感歉意)。

这是 Elastic Stack (Elasticsearch) Advent Calendar 2019 的第四天文章。
虽然我平时没怎么接触这个服务,但我想在我在 Qiita 的初稿中提及到所谓的地理信息系统(GIS),我已经有5年左右没有接触了,平时主要从事搜索和自然语言处理领域。如果有我没有深入研究的地方,请指正。

太长不看

    • Elastic Maps は docker-compose でシュッと試せる

 

    • 7.5.0 では kibana.yml であれこれしたりゴリゴリクエリ書かなくても、KibanaのGUI上でかなりの操作が完結できる。

 

    色んなデータソースをさくっとマッピングして集計できるのがスゴみ

弹性地图是什么?

以下是对公式(https://www.elastic.co/jp/products/maps)的概述说明:

Kibana的地图应用程序可以将多个不同索引显示为多层图层,在一个视图中。通过将多个索引图层叠加在同一张地图上,可以实时批量搜索和过滤。在安全运营中心,可以同时监视静态服务器位置信息和动态攻击位置信息。如果有感兴趣的信息,可以放大地图,显示高精度的详细信息作为独立的文档。

在Web服务中,当提到地图时,我会立即想到Google地图和Yahoo地图。在显示地图的网站上,我认为这些地图广泛被使用,包括外观的定制。

然而,当我们想要结合多个数据源,并进行筛选和汇总时,我们需要组合几个API来进行实现。使用Elastic Maps,这样的用例似乎可以轻松实现。在这里,我将尝试将与正在逐年增加的“灾害”有关的一些信息进行地图映射。

首先建立环境

使用Elastic Stack 可以提供Docker镜像。在您喜欢的环境中创建并启动以下文件。
作为前提条件,我们将以最基本的设置启动Elasticsearch和Kibana的开发(试用)版本7.5.0。
如果您想从GitHub上迅速获取,请点击这里。

version: '2.2'
services:

  # https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
    environment:
      - discovery.type=single-node
      - cluster.name=es-docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

  # https://www.elastic.co/guide/en/kibana/7.5/docker.html
  kibana:
    image: docker.elastic.co/kibana/kibana:7.5.0
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - 5601:5601
    networks:
      - elastic

volumes:
  data01:
    driver: local

networks:
  elastic:
    driver: bridge

elasticsearch.hosts: "http://elasticsearch:9200"
server.host: "0.0.0.0"

i18n.locale: "ja-JP"

在放置了两个文件的目录中,执行 docker-compose up 命令后,将完成从下载镜像到创建Docker网络等操作,然后可以通过浏览器访问 Kibana。

$ docker-compose up
Creating network "esac2019-elasticsearch-kibana-750_elastic" with driver "bridge"
Creating volume "esac2019-elasticsearch-kibana-750_data01" with local driver
Creating esac2019-elasticsearch-kibana-750_elasticsearch_1 ... done
Creating esac2019-elasticsearch-kibana-750_kibana_1        ... done
...
1206_001.PNG

向地图上添加数据

1206_002.gif

为了根据今年肆虐的台风19号的路径信息,选择逃离附近的合适地点,我们将对紧急避难所和AED设施的信息进行地图标注。所需的GeoJSON数据将从以下网站获取。

国立情报学研究所 数字台风
G空间信息中心 指定紧急避难场所数据
G空间信息中心 AED数据
G空间信息中心 根据都道府县划分的1公里网格

1206_003.gif

精简数据

在使用筛选器时,关键是在GeoJSON导入时提前指定“工具提示中显示的字段”。例如,当加载台风19号的信息时,我已经指定了压力、时间和风速,例如可以将其限制在“风速超过40m”的条件下,在地图上显示。只需在KQL中指定条件。这也很方便。

1206_004.PNG
1206_005.PNG
1206_004.gif

可以将通过画面创建的过滤器,以Elasticsearch的查询DSL形式进行编辑和细节调整。通过自定义数据映射并叠加过滤器,可以拓展无限可能。

结束

弹性地图(Elastic Maps)是一个非常好的产品,除了安全分析、基于地图数据的日志分析、位置信息监控和商业分析,以及地理空间分析之外,它在与Elasticsearch的结合上也表现出色。久违地接触地图服务,深深感受到世界变得更加便利了。而且,Kibana实在是太好用了,如果想要进行一些分析,先尝试进入Kibana吧!


请在真正需要使用时,请务必在确认和验证Elastic Stack的设置和所使用数据的权利和许可之后使用。(免责声明)

广告
将在 10 秒后关闭
bannerAds