如需从 Firestore 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
如果您的 Firestore 数据与 Gemini Enterprise 位于同一项目中,请参阅从 Firestore 导入数据。
如果您的 Firestore 数据与 Gemini Enterprise 项目位于不同的项目中,请参阅设置 Firestore 访问权限。
设置从其他项目访问 Firestore
如需向 Gemini Enterprise 授予对其他项目中的 Firestore 数据的访问权限,请按以下步骤操作:
将以下
PROJECT_NUMBER
变量替换为您的 Gemini Enterprise 项目编号,然后复制此代码块的内容。这是您的 Gemini Enterprise 服务账号标识符:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
前往 IAM 和管理页面。
在 IAM 和管理页面上,切换到您的 Firestore 项目,然后点击授予访问权限。
在新的主账号中,输入实例的服务账号标识符,然后选择 Datastore > Cloud Datastore Import Export Admin 角色。
点击保存。
切换回 Gemini Enterprise 项目。
接下来,前往从 Firestore 导入数据。
从 Firestore 导入数据
控制台
如需使用控制台从 Firestore 注入数据,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
前往数据存储区页面。
点击创建数据存储区。
在选择数据源页面上,选择 Firestore。
指定您计划导入的数据的项目 ID、数据库 ID 和集合 ID。
点击继续。
为数据存储区选择一个区域。
为数据存储区输入名称。
点击创建。
如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。
注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。
REST
如需使用命令行创建数据存储区并从 Firestore 中注入数据,请按以下步骤操作:
创建数据存储区。
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 控制台中。
从 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 到数据存储区的数据增量刷新。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。 指定FULL
会导致数据存储区中的文档完全重新定位。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 Firestore 中不存在的文档。如果您想自动删除不再需要的文档,FULL
模式会很有帮助。AUTO_GENERATE_IDS
:可选。指定是否自动生成文档 ID。如果设置为true
,则文档 ID 将根据载荷的哈希值生成。请注意,生成的文档 ID 在多次导入时可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将reconciliationMode
设置为FULL
,以保持文档 ID 的一致性。ID_FIELD
:可选。指定哪些字段是文档 ID。