Kibanaの使い方 〜グラフ化①〜【Amazon Elasticsearch Service】

スタートプラン

どうも!大阪オフィスの西村祐二です。

本ブログは下記ブログの続きになります。
(2017/12/26時点の内容となります)

前回は環境構築とデータの準備まで完了しました。
今回から実際にKibanaを使ってデータを可視化していきたいと思います。

公式ドキュメントの内容にそって可視化の基礎を学んでいきます。

環境

  • サービス:Amazon Elasticsearch Service
  • Elasticsearch:6.0
  • Kibana:6.0.1

Index Patternの定義

Elasticsearchに読み込まれたデータの各セットには、Index Patternがあります。それを定義します。
前回取り込んだデータ、シェイクスピアデータセットにはshakespeareという名前のインデックスがあり、アカウントデータセットにはbankという名前のインデックスがあります。_index pattern_は、複数のインデックスに一致するオプションのワイルドカードを持つ文字列です。

Index Patternを定義するときは、そのパターンに一致するインデックスがElasticsearchに存在しなければなりません。そのインデックスには、データが含まれている必要があります。

▼シェイクスピアデータセットのIndex Patternとしてshakes*を指定し、Create をクリックしてIndex Patternを定義します。

▼アカウントデータセットも同様の手順でIndex Patternをba*として定義します。

▼Logstashデータセットには時系列データが含まれるため、Time Filter field name@timestampとしてIndex Patternを定義します。

データの検出

左のメニューの「Discover」をクリックします。

クエリバーで、 Elasticsearchクエリを入力して、データを検索できます。
Discoverで結果を調べて、Visualizeで保存した結果のビジュアライゼーションを作成する流れになります。

クエリはより大きい(>)、より小さい(<)、または等しい(=)などの比較演算子を使用できます。論理演算子AND、OR、およびNOT(すべて大文字)で要素をつなぐことができます。

ドキュメントに記載の下記クエリを試してみます。
このクエリは、残高が47,500より多い0~99の口座番号をすべて返します。

1
account_number:<100 AND balance:>47500

サンプルのアカウントデータを検索し、5つの結果が返ってきていることがわかります。

ここままでは、すこし見づらいですね。
例えば、検索でヒットした中から「年齢はどうなってるいるか」を知りたいとします。
そんなときは右の、「Available Fileds」の中の「Age」をクリックします。

ageに絞った値のみを表示してくれます。これで、目的のデータをすぐに確認することができます。

データの可視化

左のメニューの「Visualize」をクリックします。 ここから、グラフを作成していきます。

グラフ作成前に、どんなグラフを作成したいか考えましょう。
アカウントデータより口座の残高がわかるため、
金額毎の割合を可視化したいと思います。

データ確認

まず、口座残高の最大値を確認しておきます。

  • 「Discover」から「ba*」のインデックス定義を選択
  • 「Available Fields」から「balance」を選択
  • balanceタブの▼をクリックしソート

最大が「49,989」であることがわかります。
ここから、グラフ表示する際のレンジ幅をどうするかあたりをつけます。

グラフ作成

では、可視化するためにグラフ作成していきます。

▼「Pie」という円グラフを作成するアイコンをクリックします。

▼インデックス定義は「ba*」を選択します。

▼「Split Slices」をクリックします。

▼各残高の範囲を設定し反映します。

  • 「Aggregation」から範囲を指定する「Range」を選択します。
  • 「Field」から残高情報の「balance」を選択します。
  • 下記画像のように残高の範囲の指定します。
  • 「Custom Label」に「口座残高」と入力します。
  • 設定が完了したら「▶」をクリックしてグラフに反映します。

▼円グラフにマウスオーバーすると、値とCount数と割合が表示されます。

▼countの数値を表示させることもできます。

ここから「31,000 to 50,000」がもっとも割合が大きいことがわかります。

年齢情報をグラフに追加

口座残高の金額の割合がわかったので、次はその金額に含まれる人の年齢の割合を表示したいと思います。

▼バケットリストの下にある「Add sub-buckets」をクリックします。

▼年齢情報を設定します。

  • 「Split Slices」をクリックします。
  • 集約リストから「Terms」を選択します。
  • フィールドリストから「age」を選択します。
  • 「Custom Label」に「年齢」と入力します。
  • ▶」 をクリックしグラフに反映します。

金額に対する年齢の割合を表示することができました。
これより口座残高が「15000 to 30999」に該当する人で、年齢28の人が「25人で、22.94%」であることがわかります。

▼金額部分のグラフをクリックすると、その金額にフォーカスしたグラフになります。

グラフ保存

今回作成したグラフを保存します。
保存するには右上の「Save」をクリックします。
名前を「test-pie-chart」として保存します。

保存が完了したら、「Visualize」からいつでもグラフを確認することができます。

さいごに

いかがだったでしょうか。
Kibanaで基礎的なグラフを作成し表示してみました。

次は他のデータを使って違ったグラフ表示をしてみます。

スタートプラン