Cloud Search チュートリアルのこのページでは、データをインデックス登録するためのデータソースとコンテンツ コネクタを設定する方法について説明します。 このチュートリアルの最初から始めるには、 Cloud Search スタートガイドのチュートリアルをご覧ください。
コネクタをビルドする
作業ディレクトリを cloud-search-samples/end-to-end/connector ディレクトリに変更し、次のコマンドを実行します。
mvn package -DskipTests
このコマンドは、コンテンツ コネクタのビルドに必要な依存関係をダウンロードし、コードをコンパイルします。
サービス アカウントの認証情報を作成する
コネクタが Cloud Search API を呼び出すには、サービス アカウントの認証情報が必要です。認証情報を作成する手順は次のとおりです。
- Google Cloud コンソールに戻ります。
- 左側のナビゲーションで [認証情報] をクリックします。[認証情報] ページが表示されます。
- [+ 認証情報を作成] プルダウン リストをクリックし、 [サービス アカウント] を選択します。[サービス アカウントの作成] ページが表示されます。
- [サービス アカウント名] フィールドに「tutorial」と入力します。
- サービス アカウント ID の値(サービス アカウント名の直後)をメモします。 この値は後で使用します。
- [作成] をクリックします。[サービス アカウントの権限(省略可)] ダイアログが表示されます。
- [続行] をクリックします[ユーザーにこのサービス アカウントへのアクセスを許可する(省略可)] ダイアログが表示されます。
- [完了] をクリックします。[認証情報] 画面が表示されます。
- [サービス アカウント] で、サービス アカウントのメールアドレスをクリックします。[サービス アカウントの詳細] ページが表示されます。
- [鍵] で、[鍵を追加] プルダウン リストをクリックし、[新しい鍵を作成] を選択します。[秘密鍵の作成] ダイアログが表示されます。
- [作成] をクリックします。
- (省略可)[console.cloud.google.com でのダウンロードを許可しますか?] ダイアログが表示されたら、[許可] をクリックします。
- 秘密鍵ファイルがパソコンに保存されます。ダウンロードしたファイルの場所をメモしておいてください。このファイルは、Google Cloud Search API を呼び出すときに認証できるように、コンテンツ コネクタを構成するために使用されます。
サードパーティ サポートを初期化する
他の Cloud Search API を呼び出す前に、Google Cloud Search のサードパーティ サポートを初期化します。
サードパーティ サポートを初期化する手順は次のとおりです。
- Cloud Search プラットフォーム プロジェクトでウェブ アプリケーションの認証情報を作成します。認証情報を作成するをご覧ください。クライアント ID とクライアント シークレットが必要です。
-
OAuth 2.0 Playground を使用してアクセス トークンを取得します。
- [OAuth 2.0 Configuration](設定アイコン)をクリックし、[Use your own OAuth credentials] をオンにします。
- クライアント ID とクライアント シークレットを入力します。
- [scopes] フィールドに「
https://www.googleapis.com/auth/cloud_search.settings」と入力し、[Authorize APIs] をクリックします。 - [Exchange authorization code for tokens] をクリックします。
次の curl コマンドを実行します。
[YOUR_ACCESS_TOKEN]はトークンに置き換えます。curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressed成功した場合、レスポンスの本文に
operationが含まれます。 失敗した場合は、Cloud Search サポートにお問い合わせください。operations.getを使用して初期化を確認します。curl 'https://cloudsearch.googleapis.com/v1/operations/<var>operation_name</var>?key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compresseddoneがtrueの場合、初期化は完了しています。
データソースを作成する
次に、管理コンソールでデータソースを作成します。データソースは、コネクタを使用してコンテンツをインデックス登録するための名前空間を提供します。
- Google 管理コンソールを開きます。
- [アプリ] アイコンをクリックします。[アプリの管理] ページが表示されます。
- [Google Workspace] をクリックします。[アプリ Google Workspace 管理] ページが表示されます。
- 下にスクロールして [Cloud Search] をクリックします。[Google Workspace の設定] ページが表示されます。
- [サードパーティのデータソース] をクリックします。[データソース] ページが表示されます。
- 丸い黄色の [\+] をクリックします。[新しいデータソースを追加] ダイアログが表示されます。
- [表示名] フィールドに「tutorial」と入力します。
- [サービス アカウントのメールアドレス] フィールドに、前のセクションで作成したサービス アカウントのメールアドレスを入力します。サービス アカウントの メールアドレスがわからない場合は、 サービス アカウント ページで値を確認してください。
- [追加] をクリックします。[データソースを作成しました] ダイアログが表示されます。
- [**OK**] をクリックします。 新しく作成したデータソースのソース ID をメモします。ソース ID は、コンテンツ コネクタを構成するために使用されます。
GitHub API の個人アクセス トークンを生成する
コネクタには、十分な割り当てを確保するために、GitHub API への認証済みアクセスが必要です。簡略化のため、コネクタは OAuth の代わりに個人アクセス トークンを利用します。個人トークンを使用すると、OAuth と同様に、限られた権限セットを持つユーザーとして認証できます。
- GitHub にログインします。
- 右上にあるプロフィール写真をクリックします。プルダウン メニューが表示されます。
- [設定] をクリックします。
- [デベロッパー向けの設定] をクリックします。
- [Personal access tokens] をクリックします。
- [Generate personal access token] をクリックします。
- [Note] フィールドに「Cloud Search tutorial」と入力します。
- [public_repo] スコープをオンにします。
- [Generate token] をクリックします。
- 生成されたトークンをメモします。これは、コネクタが GitHub API を呼び出すために使用され、インデックス登録を実行するための API 割り当てを提供します。
コネクタを構成する
認証情報とデータソースを作成したら、これらの値を含めるようにコネクタ構成を更新します。
- コマンドラインから、ディレクトリを
cloud-search-samples/end-to-end/connector/に変更します。 - テキスト エディタで
sample-config.propertiesファイルを開きます。 api.serviceAccountPrivateKeyFileパラメータを、先ほどダウンロードしたサービス認証情報のファイルパスに設定します。api.sourceIdパラメータを、先ほど作成したデータソースの ID に設定します。github.userパラメータを GitHub ユーザー名に設定します。github.tokenパラメータを、先ほど作成したアクセス トークンに設定します。- ファイルを保存します。
スキーマを更新する
コネクタは、構造化コンテンツと非構造化コンテンツの両方をインデックス登録します。データをインデックス登録する前に、データソースのスキーマを更新する必要があります。次のコマンドを実行してスキーマを更新します。
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
コネクタを実行する
コネクタを実行してインデックス登録を開始するには、次のコマンドを実行します。
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
コネクタのデフォルト構成では、googleworkspace 組織内の単一のリポジトリをインデックス登録します。リポジトリのインデックス登録には 1 分ほどかかります。
最初のインデックス登録後、コネクタは Cloud Search 検索インデックスに反映する必要があるリポジトリの変更をポーリングし続けます。
コードの確認
残りのセクションでは、コネクタのビルド方法について説明します。
アプリケーションを起動する
コネクタのエントリ ポイントは GithubConnector クラスです。
main メソッドは、SDK の IndexingApplication
をインスタンス化して起動します。
SDK によって提供される ListingConnector
は、
Cloud Search キュー
を利用してインデックス内のアイテムの状態を追跡する走査戦略を実装します。GitHub からコンテンツにアクセスするために、サンプル コネクタによって実装された GithubRepository に委任します。
GitHub リポジトリを走査する
完全走査中に、getIds()
メソッドが呼び出され、インデックス登録が必要なアイテムがキューにプッシュされます。
コネクタは、複数のリポジトリまたは組織をインデックス登録できます。障害の影響を最小限に抑えるため、GitHub リポジトリは一度に 1 つずつ走査されます。チェックポイントは、getIds() の後続の呼び出しでインデックス登録されるリポジトリのリストを含む走査の結果とともに返されます。エラーが発生した場合、インデックス登録は最初からではなく、現在のリポジトリから再開されます。
collectRepositoryItems() メソッドは、単一の GitHub リポジトリの走査を処理します。このメソッドは、キューにプッシュされるアイテムを表す ApiOperations
のコレクションを返します。アイテムは、リソース名とアイテムの現在の状態を表すハッシュ値としてプッシュされます。
ハッシュ値は、GitHub リポジトリの後続の走査で使用されます。この値を使用すると、追加のコンテンツをアップロードしなくても、コンテンツが変更されたかどうかを軽量に確認できます。コネクタはすべてのアイテムをキューに入れます。アイテムが新しい場合、またはハッシュ値が変更された場合は、キューでポーリングできます。それ以外の場合、アイテムは変更されていないとみなされます。
キューを処理する
完全走査が完了すると、コネクタはインデックス登録が必要なアイテムのキューのポーリングを開始します。キューから取得されたアイテムごとに getDoc()
メソッドが呼び出されます。このメソッドは、GitHub からアイテムを読み取り、インデックス登録に適した表現に変換します。
コネクタは、いつでも変更される可能性のあるライブデータに対して実行されるため、getDoc() はキュー内のアイテムがまだ有効であることを確認し、存在しなくなったアイテムをインデックスから削除します。
コネクタがインデックス登録する GitHub オブジェクトごとに、対応する indexItem() メソッドが Cloud Search のアイテム表現の作成を処理します。たとえば、コンテンツ アイテムの表現を作成するには、次のようにします。
次に、検索インターフェースをデプロイします。