レビュー

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、ConfluenceJiraなどのサービスと連携可能です。


まずは「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で限定しセキュリティを高めている反面、セットアップが少し煩雑ではありますが、複数のサービスを利用している人は便利に利用できそうです。

この記事のタイトルとURLをコピーする

・関連記事
Googleが生んだ「Kubernetes」がポケGOやメルカリを支えるほどの成功を収めた理由とは? - GIGAZINE

無料で機械学習やデータ処理の流れを簡単に可視化してくれるワークフローツール「Flyte」を触ってみた - GIGAZINE

無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「Moloch」 - GIGAZINE

無料&オープンソースでシステム障害のレポートを一元化できるNetflix製インシデント管理ツール「Dispatch」 - GIGAZINE

in レビュー,   ソフトウェア,   ネットサービス,   ウェブアプリ, Posted by darkhorse_log

You can read the machine translated English article here.