概要
Elasticsearch(エラスティックサーチ)は索引型(インデックス型)の全文検索エンジンの一つです。索引型の全文検索エンジンの身近な例として、Google検索では検索条件となる特定の文字列をインデックスとして利用してその文字列を含むウェブページを検索し、Githubのソースコード検索では特定のコードをインデックスとして検索に利用しています。
Elasticsearchは、Google検索のように特定の文字列をインデックスとして利用して検索しますが、Google検索がウェブページを検索するのに対してElasticsearchはドキュメントから検索を行います。イメージとしては図書館の本の検索機能が近いのではないでしょうか。そしてElasticsearchの活用により、図書館の本や新聞記事のようなデータだけではなく、企業情報やログファイルとして出力されたアクセスログやセキュリティログといった幅広いデータを高速で検索することが可能となります。
Elasticsearchには同じ提供元が開発したKibanaというツールがあり、こちらを用いてデータの可視化を行うことが可能です。ですがやはり使い慣れたBIツールで可視化を行いたい、他のデータと合わせて一つのDWH(データウェアハウス)へ統合してまとめて管理したいなどの場合にはデータ統合を行う必要があります。
そしてこのようなデータ統合に役立つのがETLツールと呼ばれるサービスです。
なお、ETLツールという名称は
E:Extract(抽出)
T:Transform(変換)
L:Load(格納))
の頭文字に由来しています。
ETLについてはこちらの記事で詳しく解説しています。
そこで今回は、trocco®(トロッコ)という分析基盤向けデータ統合サービスを使い、ElasticsearchのデータをGoogle BigQueryへ統合し、KibanaではなくLooker Studio(旧:Googleデータポータル)を用いてデータの可視化をやってみます。
なお今回データの転送手段として使用するtrocco®は、Elasticsearchの他にも、様々な広告・CRM・DBなどのデータソースに対応しています。

ゴール
↓このようなグラフを30分程度で作成します。またtrocco®の機能を利用し、設定後は自動的にデータが最新地に更新されるようにします。

こんな人におすすめ
- ElasticsearchのデータをGoogle BigQueryへ統合してデータベースとして利用したい方
- Elasticsearchのデータを他のサービス、ツールのデータと組み合わせて分析したい方
- 日々のデータの取り込み作業に疲れている方
1. DWHと同期する手段の選定
1-1. DWHの選定
今回データの統合先として使用するDWH(データウェアハウス)を決めます。
- Google BigQuery
- Amazon Redshift
- MySQLやPostgreSQL など
trocco®はいずれのサービスとも連携していますが、今回はGoogle BigQueryを使用します。
1-2. ElasticsearchのデータをGoogle BigQueryへ転送する3つの方法
Google BigQueryへデータを統合することが決まったので、続いてデータを転送するための手段を検討していきましょう。
- ElasticsearchとGoogle BigQueryのAPIを利用し、自分でプログラムを書いて連携をする
- Embulkを利用して自分で環境構築を行う
- trocco®を利用して画面上の設定のみで転送する
1 はAPIについての知識が必要でプログラムを書く作業や環境構築の手間が発生します。2 は1 と同様にEmbulkについての知識が必要になるほか、エラーが発生した際の対処もAPIを利用した転送に比べ困難になります。
そこで今回はAPI、Embulkについての知識もいらず、また自分でコーディング作業をする必要もない3 のtrocco®を利用します。
2. trocco®でElasticsearch → Google BigQueryの転送自動化
2-0. 事前準備
事前にtrocco®のアカウント、Elasticsearchのホスト名が必要になります。trocco®は無料トライアルも実施しているため事前に申し込みをしておきましょう。
https://trocco.io/lp/index.html
(申し込みの際にこちらの記事を見たという旨を記載して頂ければスムーズなご案内が可能です。)
2-1. 転送元・転送先の決定
trocco®にアクセスし、ダッシュボード画面から「転送設定を作成」ボタンを押します。

転送元にElasticsearchを、転送先にGoogle BigQueryを選択肢、「この内容で作成」ボタンを押します。

設定画面に進むので必要な情報を入力していきます。
2-2. Elasticsearchとの連携設定
trocco®には社内のユーザー間でチームを作成し、チームで転送設定を共有するチーム機能があります。チームの他メンバーにも転送設定の内容がわかるよう名前とメモを入力しておきましょう。

はじめにElasticsearchとの接続を行う必要があります。画面の右の「接続情報を追加」ボタンから接続を行いましょう。

別タブで接続情報の新規作成画面が開きますので、Elasticsearchのホストを入力して、「保存」ボタンを押します。

再度転送設定画面に戻り、「接続情報を読み込む」ボタンを押すと、作成した接続情報が選択できるかと思います。

2-3. Elasticsearchからのデータ抽出設定
これでElasticsearchとの連携は完了です。次に、どのようなデータを取得するか設定していきましょう。
ここでは試しにElasticsearchに溜めておいたあるサイトのログを取得します。
データ検索のためにluceneクエリを記述する必要があります。

2-4. 転送先Google BigQueryの設定
転送元と同じ要領で設定していきます。
データセットとテーブルはお好きな名前を入力してください。自動生成オプションを有効にすれば、データセット・テーブルが自動作成されます。
また、カスタム変数を使うことにより、ジョブ実行時に指定の値に置き換えることができます。
BigQueryデータセットのロケーションを指定することができます。デフォルトはUSリージョンです。

これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。
2-5. データのプレビュー
Elasticsearchからどのようにデータが取得されるかプレビューで確認出来ます。取得したいデータがプレビューに表示されていなければ設定画面に戻り、再度転送設定をやり直します。

2-6. スケジュール・通知設定
以下のように実行スケジュールを設定することで、転送を自動化することが出来ます。

2-7. データ転送ジョブの実行
転送設定は以上で終わりです。スケジュール機能により自動的に転送は実行されますが、今回は手動でGoogle BigQueryへデータを転送しようと思います。実行はジョブ詳細画面から右上の「実行」ボタンを押します。

3. Google BigQueryの設定
Google BigQuery側で特に操作は必要ありません。試しにGoogle BigQueryのコンソール画面からプレビューを取得してみるとたしかにデータが転送されていることが確認出来ます。

4. Looker Studio(旧:Googleデータポータル)で可視化
Google BigQueryの画面から「エクスポート」→「データポータル」を選択します。

以下のようなLooker Studioの画面に遷移します。
試しに、日ごとのサイトの閲覧数とサイト中でのクリック数を可視化してみましょう。
図の指示のとおりに変更してみてください。

すると、以下のようなグラフが出来上がります。

この画面はLooker Studioの「エクスプローラ」という機能になります。

Looker Studioのトップ画面から、「レポート」を作成し、上述の通りグラフ作成を行うと、サービス用ダッシュボードが出来上がります。

まとめ
いかがでしたでしょうか。trocco®を利用することでElasticsearchの管理画面を触ることなく簡単にデータを取得し、DWH(今回はGoogle BigQuery)に統合、連携したLooker Studioでデータの可視化を行うことが出来ました。
この記事を読んでtrocco®を使ってみたいと感じた方は、無料トライアルを実施しているので、この機会にぜひ一度お試しください。
https://trocco.io/lp/index.html
(申し込みの際にこちらの記事を見たという旨を記載して頂ければスムーズにご案内できます)
