Elastic Stack 7.9で無料化された複数のサービスをまとめて検索できる「Elastic Workplace Search」を使ってみた

Google DriveやDropbox、Gmailといった複数のサービスを利用していると「あのデータはどこのサービスに保存したかな……?」と探す手間がもったいないと考えている人もいるはず。Elasticがリリースした「Workplace Search」を使うと、複数のサービスを一元化して情報を検索することが可能。Elasticのバージョン7.9.0から基本無料で利用できるようになったので、実際にセットアップ&検索までやってみました。
Elastic Workplace Search | Elastic
https://www.elastic.co/jp/workplace-search
Workplace Searchは同じくElasticのサービスである「Enterprise Search」の一要素として提供されています。Enterprise SearchにはDockerイメージが用意されているので、今回はDockerを用いてWorkplace Searchを利用してみることに。Dockerのインストールページを参考にしてDockerの導入を済ませておきます。まずはコンテナ名によるコンテナ間通信の名前解決を行うため、Dockerネットワークを作成しておきます。
docker network create elastic-network
Enterprise Searchはバックエンドに時系列データベースのElasticsearchを利用しているので、Elasticsearchのコンテナを事前に起動しておきます。Workplace Searchを利用するには、オプションに「-e xpack.security.enabled=true」と「-e xpack.security.authc.api_key.enabled=true」を指定しセキュリティ機能を有効にする必要があります。
docker run -it -d -p 9200:9200 -p 9300:9300 --network elastic-network --name elasticsearch \ -e discovery.type=single-node \ -e xpack.security.enabled=true \ -e xpack.security.authc.api_key.enabled=true \ docker.elastic.co/elasticsearch/elasticsearch:7.9.0
コンテナを起動したら、下記コマンドでElasticsearchのデフォルトユーザーのパスワードを変更します。
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
デフォルトユーザーは複数存在しているので、それぞれにパスワードを設定していきます。

続いてWorkplace Searchの設定に必要な暗号鍵を乱数で生成します。実行すると「e2cf0f128f730c3343fc137e0cc06f3677d20e170c06a91146f448e9b97fe0cf」のような文字列が生成されます。
openssl rand -hex 32
環境変数を指定しながら、Enterprise Searchのコンテナを起動。「changeme」の部分は先ほど設定した「elastic」ユーザーのパスワードを入力します。
docker run -p 3002:3002 --name workplace-search --network elastic-network \ -e elasticsearch.host='http://elastic:changeme@elasticsearch:9200' \ -e ent_search.auth.source=standard \ -e elasticsearch.username=elastic \ -e elasticsearch.password=changeme \ -e allow_es_settings_modification=true \ -e secret_management.encryption_keys='[e2cf0f128f730c3343fc137e0cc06f3677d20e170c06a91146f448e9b97fe0cf]' \ docker.elastic.co/enterprise-search/enterprise-search:7.9.0
Elasticsearchへの接続が完了した後、データベースの初期化が始まります。

データベースの初期化が完了した後、画面にEnterprise Searchへのログインに使用するユーザー名とパスワードが表示されるので、メモしておきます。

Enterprise Searchの初期化処理が完了したら、「http://localhost:3002」へアクセス。ウェルカム画面が表示されるので「Continue to Login」をクリック。

ログイン画面が表示されました。

先ほどメモしたユーザー名とパスワードを入力し、「Log In」をクリック。

「Launch Workplace Search」をクリックすると……

Workplace Searchのホーム画面が表示されました。

さっそく検索対象を追加するため「Add sources」をクリック。

検索に対応したサービスの一覧が表示されました。GmailやGoogle Drive、Dropbox、GitHub、Confluence、Jiraなどのサービスと連携可能です。

まずは「Gmail」を検索ソースとして追加してみることに。

「Configure Gmail」をクリック。

GmailでOAuth認証を設定する必要があるとのこと。「Documentation」に従い設定を行っていきます。

まずはGoogle Developer Consoleにアクセス。ログイン画面が表示された場合はログインを済ませます。
API とサービス – API とサービス – Google API Console
https://console.developers.google.com/
ダッシュボードの組織名/プロジェクト名が表示されているボタンをクリック。

「新しいプロジェクト」をクリック。

わかりやすいプロジェクト名を入力して「作成」をクリック。

上部の検索ウィンドウに「gmail」と入力すると表示される「Gmail API」をクリック。

「有効にする」をクリックします。

ページが移動したら「認証情報を作成」をクリック。

「使用するAPI」に「Gmail API」、「APIを呼び出す場所」に「ウェブブラウザ(JavaScript)」、「アクセスするデータの種類」に「ユーザーデータ」を選択し、「必要な認証情報」をクリック。

OAuth同意画面の設定を促されるので「同意画面を設定」をクリック。

同意画面の設定画面に移ります。「User Type」を「内部」に設定して「作成」をクリック。なお、G Suiteアカウントではなく通常のGoogleアカウントの場合は「外部」のみ設定可能です。

詳細なオプションを指定する画面が表示されます。このうち設定する必要があるのは「アプリケーション名」と「スコープ」です。アプリケーション名はわかりやすい名前であれば何でもOK。「スコープを追加」をクリックします。

「../auth/gmail.readonly」にチェックを入れて「追加」をクリック。

ページ下部の「保存」をクリックします。

「認証情報」から「認証情報を作成」をクリック。

プルダウンメニューが表示されるので「OAuth クライアントID」を選択します。

「アプリケーションの種類」を「ウェブアプリケーション」、「名前」はわかりやすい名前を入力。

「URLを追加」をクリックして、Workplace SearchのURLを指定します。

「承認済みのリダイレクト URI」には、Workplace SearchのURLのサブディレクトリ「/ws/org/sources/gmail/create」と「/ws/sources/gmail/create」を加えたURIを指定。

「作成」をクリックすると……

OAuthのクライアントIDとシークレットキーが生成されました。

生成されたIDとキーをWorkplace Searchの画面に入力し、「Save Configuration」をクリック。

認証が成功すると「Gmail Configured」と表示されます。「Configure a new source」をクリック。

「Configured Sources」にGmailが追加されています。

「これでGmailの内容が検索できるはず」と思い、ホーム画面に戻ってみましたが、検索ソースの数はゼロのまま。

正しく設定できているのか確認するため、「Setting」をクリックして……

「Content Source Connectors」をクリック。

各検索ソースの接続状況を確認すると、Gmailはプライベートソースとなっており、かつプライベートソースは「Platinum」ライセンスが必要とのこと。残念ながらGmailの検索は有料となっていました。

気を取り直してGmailと同じ要領でGoogle Driveを検索ソースとして追加すると、こちらは「Connect」ボタンが緑色になり、クリックできる状態。

クリックするとGoogle Driveとの接続を行うボタンが表示されるので「Connect Google Drive」をクリック。

Googleの認証ページに移るので「許可」をクリック。

これでGoogle Driveの内容を検索することができるようになりました。「Details」でGoogle Driveの情報を取得できているかどうか確認します。

ファイル数などが表示されており、きちんと接続できていることが確認できました。

Google DriveとDropboxの横断的な検索を実現するため、Dropboxとの接続方法を参考にし、Dropboxとも接続してみました。

実際に検索を行うには「Go to search application」をクリック。

検索ページのトップには、最近更新されたファイルが一覧で表示されます。

試しに検索ウィンドウに「text」と入力すると……

PDFなどのテキストファイルをGoogle Drive、Dropboxで横断して検索することができました。

左側には検索に対するサービスごとのヒット数、ファイルのタイプや拡張子ごとのヒット数が表示されています。

検索した項目をクリックすると、右側に項目の詳細が表示されます。

下部の「Open on サービス名」をクリックすると、オリジナルのデータを検索ソースのサービス上で確認することができます。

Workplace Searchは基本無料ではあるものの、GmailはPlatinumライセンスを購入しなければ利用できないことが判明。アクセス権限をOAuthで限定しセキュリティを高めている反面、セットアップが少し煩雑ではありますが、複数のサービスを利用している人は便利に利用できそうです。
・関連記事
Googleが生んだ「Kubernetes」がポケGOやメルカリを支えるほどの成功を収めた理由とは? - GIGAZINE
無料で機械学習やデータ処理の流れを簡単に可視化してくれるワークフローツール「Flyte」を触ってみた - GIGAZINE
無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「Moloch」 - GIGAZINE
無料&オープンソースでシステム障害のレポートを一元化できるNetflix製インシデント管理ツール「Dispatch」 - GIGAZINE
・関連コンテンツ
in レビュー, ソフトウェア, ネットサービス, ウェブアプリ, Posted by darkhorse_log
You can read the machine translated English article I tried using ``Elastic Workplace Search….