Firestore から同期する

Firestore からデータを取り込むには、次の手順で Google Cloud コンソールまたは API を使用してデータストアを作成し、データを取り込みます。

Firestore データが Gemini Enterprise と同じプロジェクトにある場合は、Firestore からデータをインポートするをご覧ください。

Firestore データが Gemini Enterprise プロジェクトとは異なるプロジェクトにある場合は、Firestore アクセスを設定するをご覧ください。

別のプロジェクトから Firestore へのアクセスを設定する

別のプロジェクトにある Firestore データに Gemini Enterprise がアクセスできるようにするには、次の操作を行います。

  1. 次の PROJECT_NUMBER 変数を Gemini Enterprise プロジェクト番号に置き換えてから、このコードブロックの内容をコピーします。これは Gemini Enterprise サービス アカウントの識別子です。

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. [IAM と管理] ページに移動します。

    IAM と管理

  3. [IAM と管理] ページで Firestore プロジェクトに切り替え、[アクセス権を付与] をクリックします。

  4. [新しいプリンシパル] で、インスタンスのサービス アカウント ID を入力し、[Datastore] > [Cloud Datastore インポート / エクスポート管理者] ロールを選択します。

  5. [保存] をクリックします。

  6. Gemini Enterprise プロジェクトに戻ります。

次に、Firestore からデータをインポートするに進みます。

Firestore からデータをインポートする

Console

コンソールを使用して Firestore からデータを読み込む手順は次のとおりです。

  1. Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。

    Gemini Enterprise

  2. [データストア] ページに移動します。

  3. [データストアを作成] をクリックします。

  4. [データソースを選択] ページで、[Firestore] を選択します。

  5. インポートするデータのプロジェクト ID、データベース ID、コレクション ID を指定します。

  6. [続行] をクリックします。

  7. データストアのリージョンを選択します。

  8. データストアの名前を入力します。

  9. [作成] をクリックします。

  10. 取り込みのステータスを確認するには、[データストア] ページに移動し、データストア名をクリックして、[データ] ページで詳細を表示します。 [アクティビティ] タブのステータス列が [進行中] から [インポート完了] に変わると、取り込みが完了します。

    取り込みには、データのサイズに応じて、数分から数時間かかることがあります。

REST

コマンドラインを使用してデータストアを作成し、Firestore からデータを取り込む手順は次のとおりです。

  1. データストアを作成します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際のプロジェクトの ID。
    • DATA_STORE_ID: データストアの ID。ID に使用できるのは、小文字、数字、アンダースコア、ハイフンのみです。
    • DISPLAY_NAME: データストアの表示名。これは Google Cloud コンソールに表示されることがあります。
  2. Firestore からデータをインポートします。

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "firestoreSource": {
          "projectId": "FIRESTORE_PROJECT_ID",
          "databaseId": "DATABASE_ID",
          "collectionId": "COLLECTION_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    次のように置き換えます。

    • PROJECT_ID: Gemini Enterprise プロジェクトの ID。
    • DATA_STORE_ID: データストアの ID。ID に使用できるのは、小文字、数字、アンダースコア、ハイフンのみです。
    • FIRESTORE_PROJECT_ID: Firestore プロジェクトの ID。
    • DATABASE_ID: Firestore データベースの ID。
    • COLLECTION_ID: Firestore コレクションの ID。
    • RECONCILIATION_MODE: 省略可。値は FULL、および INCREMENTAL です。デフォルトは INCREMENTAL です。INCREMENTAL を指定すると、Firestore からデータストアへのデータの増分更新が行われます。これにより、アップサート オペレーションが実行され、新しいドキュメントを追加し、既存のドキュメントを更新された同じ ID のドキュメントで置き換えます。FULL を指定すると、データストア内のドキュメントが完全に再ベース化されます。つまり、新しいドキュメントと更新されたドキュメントがデータストアに追加され、Firestore にないドキュメントがデータストアから削除されます。FULL モードは、不要になったドキュメントを自動的に削除する場合に便利です。
    • AUTO_GENERATE_IDS: 省略可。ドキュメント ID を自動的に生成するかどうかを指定します。true に設定すると、ペイロードのハッシュに基づいてドキュメント ID が生成されます。生成されたドキュメント ID は、複数のインポートで一貫性が保たれない場合があります。複数のインポートで ID を自動生成する場合は、ドキュメント ID の整合性を維持するために、reconciliationModeFULL に設定することを強くおすすめします。
    • ID_FIELD: 省略可。ドキュメント ID のフィールドを指定します。

次のステップ

  • データストアをアプリに接続するには、検索アプリを作成するの手順に沿ってアプリを作成し、データストアを選択します。

  • アプリとデータストアが設定された後に検索結果がどのように表示されるかをプレビューするには、検索結果をプレビューするをご覧ください。