Elastic Cloudの無料トライアルで5分でデプロイしてKibana最新版のグラフ機能を利用してみた

検索エンジンElasticSearchや可視化ツールKibanaをクラウド上で容易にデプロイして利用できるSaaS製品「Elastic Cloud」がリリースされています（結構前に）。現在、14日間の無料トライアルが可能であり、最新版のElasticSearchやKibanaをAWSやGCP上で利用できます。今回は、Kibanaの最新版にしか入っていないグラフ機能を試したく、デプロイしてみました。

Elasticの製品は、非構造化データを蓄積・検索・可視化する上での有力な選択肢の1つと考えます。サンプルデータもついてますし、めちゃくちゃ簡単にお試し利用できるので、触ったことがない方は一度試してみることをお勧めします。

[Elasticsearchの パワーを利用した SaaS製品群 | Elastic](https://www.elastic.co/jp/cloud)

# デプロイは5分で終わる

「[Elasticsearchの パワーを利用した SaaS製品群 | Elastic](https://www.elastic.co/jp/cloud)」のページ左のElasticsearch Serviceにメールアドレスを入力し「今すぐトライ」します。受信メール上のリンクをクリックすると、デプロイの設定が開始します。（※2018年10月30日時点）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/38b9b9f7-ce88-7db8-84a3-1510bb448739.png)

デプロイまでの設定は以下の通りです。

1. deployment nameを決める。（何でもよい）

2. AWSやGCPを利用するかを決める。どちらでも良いと思うのですが、AWSにはregionに「Asia Pacific （Tokyo）」があったので、私はAWSを選択しました。

3. regionの設定。上記の通り。

4. set up your deployment。何も変更せず。

5. デプロイメントの最適化。いくつか最適化のプランがありますが、Elastic側っで推奨している「I/O Optimized」を選択しました。

最後に「Create deployment」をクリックしてデプロイがスタートです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/77e575dd-f91c-3d2e-65b7-2a26a515b5a6.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/c874f205-5cba-6e1e-02f1-27354d13222b.png)

デプロイはおそらく5分くらいで完了します。終了後のマイページの画面は下記になります。デプロイしたElasticc Cloudのdeploymentが表示されており、KibanaとElasticSearchのロゴが確認できます。これらをクリックしてみましょう。 

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/449bc38f-bdbc-5774-41fd-19e59b9f9603.png)

AWS上にデプロイした詳細情報が表示されています（一部黒塗り）。インスタンスはElasticSearchがmasterとSlaveで計3台、Kibanaが1台立っています。シャーディング2でElasticSearchは負荷分散を行っているものと考えられます。また、赤枠部分にElasticSearchとKibanaのエンドポイントのリンクが記載されています。Kibanaの部分をクリックすれば、Kibanaの画面に移ります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/14e4e783-6a3c-25f1-3a1f-bde27c990e0f.png)

# サンプルデータをインポートする。

さっそくKibanaにログインしてみます。最初の状態は、ElasticSearchにデータが何も入っていない状態です。ただ、このトライアルでは、Add Data to Kibanaと記載してあるとおり、サンプルのデータが用意してあるので問題ありません。log分析やMetrics監視、セキュリティ解析等、いくつかデータを用意してくれていますが、今回はフライトデータを利用したいと思います。画像赤枠の「Sample DataLoad a data set and a Kibana dashboard」をクリックします。Sample flight dataがありますので、Addしていただくと、データのインポートは完了します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/924cc7af-0795-61a5-fb98-69c639e25993.png)

# ダッシュボードを見てみる

すでにElasticSearchには、サンプルのFlight Dataがインポートされた状態であり、Kibanaには既にサンプルのグラフと作成済みダッシュボードがあります。試しにDashboardの項目を選択してください。今回は個別の説明は省きますが、以下のように地図へのプロッティング、ワードクラウド、ローデータの表示まで実に多彩な表現方法があるようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/71bf5adc-2519-549e-db7b-51eac850c84c.png)

# グラフ機能を試してみる！

今回は、インポートしたフライトデータから、「出発地の国（OriginCountry）」と「目的地の国（DestCountry）」の関係性をグラフ機能で可視化していきたいと思います。前提条件として、グラフ分析には、頂点（Vertex）と頂点間を結ぶ線（Node）があります。今回は、Vertexが「国」を表しており、出発地⇔目的地の関係性が強いほど、より太いNodeで結ばれることになります。

まず、左側のメニューより、「Graph」を選択すると、グラフ分析画面に移ります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/6df88998-e905-86c7-1bb7-184f8ac87169.png)

次に、左上の「New Graph Workspace」の下にあるタブから、今回の対象データである「kibana_sample_data_flights」を選択してください。その右にある十字マークからVertexとなるデータを選択することができます。今回は下記2つのフィールドを選択してください。

* OriginCountry
* DestCountry

それぞれ、Vertexのマーク、色、描写する件数を指定できます。マークや色は好きなようにしていただき、描写件数（Max terms per hop）は、それぞれ100としましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/48d04764-3fb1-06a6-bc4d-76e6782f125e.png)

その右側では、Kibanaでの検索クエリを入力することができます（「foo AND bar NOT baz」と記載されているところ）。今回はデータ数はそれほど多くないので、全てのデータを対象とする「*」を入力し、検索を実行（🔎クリック）してください。下記のようなグラフが生成されると思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/eba63960-6af4-5c49-9be1-abaa1de595b3.png)

簡単に考察すると、「MX（メキシコ）」と「IN（インド）」間のNodeが非常に太くなっており、両国間のフライトデータが多く存在することがわかります。右側にあるSelectionsと書かれたパレットを使用すると以下のようなことができますので試してみてください。

* 例えば、JP（日本）のVertexを選択して、JPを中心としたグラフを再構成する。
* JP（日本）とリンクするVertexを抽出する。
* JP（日本）のVertexに関するローデータを出力（Drill Down）する。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188414/492f3b1b-9634-d259-7c5f-3b73d2077552.png)

色々いじってみると面白いので、無料トライアルできる間にぜひ試してみてください。

以上です。