GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

Elasticsearch と Kibana を使って地図データを可視化してみよう!

さて、本日は Elasticsearch と Kibana を使って地図データを可視化してみようと思います。ただ、Elasticsearch と Kibana のインストールや使い方については本エントリーでは紹介はしませんので、興味のある方は公式ドキュメントを読んでみてください。

www.elastic.co

Elasticsearch とは

Elasticsearch は Apache Lucene をベースにしたオープンソースの検索エンジンです。近年では利用者が急増して、現在では最も人気のある検索エンジンとなっています。Elasticsearch は元々全文検索の用途で開発されましたが、それ以外にもログ収集・解析の用途としても多く利用されています。

Elasticsearch の特徴
  • 分散配置による高速化と高可用性
  • REST API によるアクセス
  • JSON フォーマットに対応したドキュメント志向データベース
  • ログ収集・可視化などの多様な関連ソフトウエアとの連携

Kibana とは

Kibana は Elasticsearch に格納されているデータをブラウザを用いて可視化、分析するためのツールです。グラフ、ダッシュボード、地図などを使ってデータを可視化することができます。

環境

CentOS 7
Elasticsearch7.6
Kibana7.6

手順

  1. データ作成
  2. データ可視化
データ作成

今回は2つデータを作成しました(駅名とそこの緯度経度を持つデータ)。curl コマンドか Kibana コンソールを使ってデータを作成できるので、両方のやり方を紹介します。

1.curl コマンド

curl -XPUT "http://localhost:9200/test_index" -H 'Content-Type: application/json' -d'{  "mappings": {    "properties": {      "location": {        "type": "geo_point"      }    }  }}'
curl -XPUT "http://localhost:9200/test_index/_doc/1" -H 'Content-Type: application/json' -d'{  "text": "蒲田駅",  "location": {     "lat": 35.562479,    "lon": 139.716073  }}'
curl -XPUT "http://localhost:9200/test_index/_doc/2" -H 'Content-Type: application/json' -d'{  "text": "横須賀中央駅",  "location": {     "lat": 35.278699,    "lon": 139.670040  }}'
curl -XGET "http://localhost:9200/test_index/_search"

2.Kibana コンソール

PUT test_index
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      }
    }
  }
}

PUT test_index/_doc/1
{
  "text": "蒲田駅",
  "location": { 
    "lat": 35.562479,
    "lon": 139.716073
  }
}

PUT test_index/_doc/2
{
  "text": "横須賀中央駅",
  "location": { 
    "lat": 35.278699,
    "lon": 139.670040
  }
}

GET test_index/_search

このような形でデータが格納されていることがわかります。

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "test_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "text" : "蒲田駅",
          "location" : {
            "lat" : 35.562479,
            "lon" : 139.716073
          }
        }
      },
      {
        "_index" : "test_index",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "text" : "横須賀中央駅",
          "location" : {
            "lat" : 35.278699,
            "lon" : 139.67004
          }
        }
      }
    ]
  }
}
データ可視化

まずはKibana のマップを表示させてみました。続いて作成したデータを Kibana で可視化してみようと思います。

f:id:sanvarie:20210206222840p:plain

ポイントが二つプロットされていることがわかります。それぞれ拡大して確認してみようと思います。

f:id:sanvarie:20210206223508p:plain

蒲田駅と横須賀中央駅にそれぞれポイントがプロットされていることがわかります

f:id:sanvarie:20210206223559p:plain

f:id:sanvarie:20210206223644p:plain

さいごに

ものすごく簡単にでしたが Elasticsearch と Kibana を使って地図データの可視化に成功しました。データの表示だけではなくデータの分析もできるっぽいので、もう少し使い方を覚えたらそれについても紹介したいと思います。Elasticsearch に関しては今後ますます人気が高まるでしょうし、興味のある方はぜひ使ってみてください。本日は以上です。