برای کسب اطلاعات بیشتر درباره نمایههای نسخه Firestore Enterprise، به نمای کلی نمایهها مراجعه کنید.
قبل از شروع
قبلاز اینکه بتوانید نمایهای در Cloud Firestore ایجاد کنید، مطمئن شوید که یکی از نقشهای زیر به شما اختصاص داده شده است:
roles/datastore.ownerroles/datastore.indexAdminroles/editorroles/owner
برای اعطای نقش، اعطای یک نقش را ببینید. برای اطلاعات بیشتر درباره نقشهای Cloud Firestore و اجازههای مرتبط، به نقشهای ازپیشتعریفشده مراجعه کنید.
اگر نقشهای سفارشی تعریف کردهاید، همه اجازههای زیر را برای ایجاد نمایهها اختصاص دهید:
datastore.indexes.createdatastore.indexes.deletedatastore.indexes.getdatastore.indexes.listdatastore.indexes.update
ایجاد نمایه
برای ایجاد نمایه، مراحل زیر را تکمیل کنید:
کنسول Firebase
-
در کنسول Firebase، به صفحه Firestore Database بروید.
- پایگاه دادهای را از فهرست پایگاههای داده انتخاب کنید.
- در برگه نمایهها، روی ایجاد نمایه کلیک کنید.
- شناسه مجموعه را وارد کنید.
- یک یا چند مسیر فیلد اضافه کنید و برای هرکدام یک گزینه نمایه انتخاب کنید.
- گزینه حضور فیلد را انتخاب کنید، یا غیرپراکنده یا پراکنده.
- روی ایجاد کردن کلیک کنید.
- نمایه جدیدتان در فهرست نمایهها نمایش داده میشود و Cloud Firestore شروع به ایجاد نمایه شما میکند. وقتی نمایهتان ایجاد شد، علامت تأیید سبزرنگی در کنار نمایه خواهید دید. اگر نمایه ایجاد نشد، برای دلایل احتمالی به خطاهای ساخت نمایه مراجعه کنید.
gcloud CLI
برای ایجاد نمایه، از فرمان
gcloud firestore indexes composite create
استفاده کنید.
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION \ --field-config=FIELD_CONFIGURATION \ --query-scope=collection-group \ --density=dense
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده.
- COLLECTION: نام مجموعه.
- FIELD_CONFIGURATION: پیکربندی فیلد. برای هر فیلد،
--field-config=field-path=را اضافه کنید. برای مثال:--field-config=field-path=user-id,order=descending \ --field-config=field-path=score,order=descendingبرای اطلاعات بیشتر درباره پیکربندی این فیلدها،
--field-configرا ببینید.
برای ایجاد نمایه پراکنده، --density=sparse-any را تنظیم کنید.
برای ایجاد نمایه منحصربهفرد، پرچم --unique را اضافه کنید.
Terraform
از منبع
google_firestore_index
استفاده کنید.
resource "google_firestore_index" "index" { database = "DATABASE_ID" collection = "COLLECTION" query_scope = "COLLECTION_GROUP" // You can include multiple field blocks fields { field_path = "FIELD_PATH" order = "ORDER" } // Optional multikey = true density = "DENSITY" }
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده برای پایگاه داده انتخابی شما
- COLLECTION: نام مجموعه برای نمایهسازی
- FIELD_PATH: نام فیلد برای نمایهسازی
- ORDER: یکی از
ASCENDINGیاDESCENDING - DENSITY: یکی از
SPARSE_ANYیاDENSE
ایجاد نمایه نوشتاری
برای ایجاد نمایه نوشتاری، مراحل زیر را تکمیل کنید:
;کنسول Google Cloud
-
در کنسول Google Cloud، به صفحه پایگاههای داده بروید.
- پایگاه دادهای را از فهرست پایگاههای داده انتخاب کنید.
- در منو پیمایش، روی نمایهها کلیک کنید.
- اختیاری: نامی برای نمایه وارد کنید.
- به نوع جستجو بروید و نوشتار را انتخاب کنید.
- شناسه مجموعه را وارد کنید.
- یک یا چند فیلد را برای نمایهسازی پیکربندی کنید.
- دامنه پُرسمان را برای نمایه تنظیم کنید.
- زبان پیشفرضی را انتخاب کنید.
- اختیاری: مسیر لغو زبان را برای نام فیلدی که حاوی تنظیم زبان سند است تنظیم کنید.
- روی ایجاد کردن کلیک کنید.
- نمایه جدیدتان در فهرست نمایهها نمایش داده میشود و Cloud Firestore شروع به ایجاد نمایه شما میکند. وقتی نمایه شما ایجاد شد، علامت تأیید سبزرنگی در کنار نمایه نمایش داده میشود.
gcloud CLI
برای ایجاد نمایه نوشتاری، از فرمان
gcloud firestore indexes composite create
استفاده کنید:
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION_GROUP \ --field-config=field-path=FIELD_NAME,search-config='{"text-spec": {"index-specs": [{"index-type": "tokenized", "match-type": "match-globally"}]}}' \ --search-index-options=text-language=en \ --async
موارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده.
- COLLECTION_GROUP: شناسه مجموعه برای نمایهسازی.
- FIELD_NAME: نام فیلد برای نمایهسازی.
پرچم --async عملیات ایجاد نمایه را در پسزمینه اجرا میکند.
ایجاد نمایه زمینمکانی
برای ایجاد نمایه جغرافیایی-فضایی، مراحل زیر را تکمیل کنید:
;کنسول Google Cloud
-
در کنسول Google Cloud، به صفحه پایگاههای داده بروید.
- پایگاه دادهای را از فهرست پایگاههای داده انتخاب کنید.
- در منو پیمایش، روی نمایهها کلیک کنید.
- اختیاری: نامی برای نمایه وارد کنید.
- به نوع جستجو بروید و جغرافیایی (2dsphere) را انتخاب کنید.
- شناسه مجموعه را وارد کنید.
- یک یا چند فیلد را برای نمایهسازی پیکربندی کنید.
- دامنه پُرسمان را برای نمایه تنظیم کنید.
- روی ایجاد کردن کلیک کنید.
نمایه جدیدتان در فهرست نمایهها نمایش داده میشود و Cloud Firestore شروع به ایجاد نمایه شما میکند. وقتی نمایه شما ایجاد شد، علامت تأیید سبزی در کنار نمایه نمایش داده میشود.
gcloud CLI
برای ایجاد نمایه جغرافیایی، از فرمان
gcloud firestore indexes composite create
استفاده کنید:
gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION_GROUP \
--field-config=field-path=FIELD_NAME,search-config='{"geo-spec": {}}' \
--asyncموارد زیر را جایگزین کنید:
- DATABASE_ID: شناسه پایگاه داده.
- COLLECTION_GROUP: شناسه مجموعه برای نمایهسازی.
- FIELD_NAME: نام فیلد برای نمایهسازی.
پرچم --async عملیات ایجاد نمایه را در پسزمینه اجرا میکند.
حذف نمایه
برای حذف نمایه، مراحل زیر را تکمیل کنید:
کنسول Firebase
-
در کنسول Firebase، به صفحه Firestore Database بروید.
- پایگاه دادهای را از فهرست پایگاههای داده انتخاب کنید.
- روی برگه نمایهها کلیک کنید.
- در فهرست نمایهها، حذف را از دکمه بیشتر برای نمایهای که میخواهید حذف کنید انتخاب کنید.
- روی حذف نمایه کلیک کنید.
gcloud CLI
برای پیدا کردن نام نمایه، از فرمان
gcloud firestore indexes composite listاستفاده کنید.gcloud firestore indexes composite list \ --database='DATABASE_ID'
DATABASE_ID را با شناسه پایگاه داده جایگزین کنید.
-
برای حذف نمایه، از فرمان
gcloud firestore indexes composite deleteاستفاده کنید.gcloud firestore indexes composite delete INDEX_NAME \ --database='DATABASE_ID'
موارد زیر را جایگزین کنید:
- INDEX_NAME: نام شاخص
- DATABASE_ID: شناسه پایگاه داده
زمان ساخت نمایه
برای ساختن نمایه، Cloud Firestore باید نمایه را ایجاد کند و سپس ورودیهای نمایه را با دادههای موجود پر کند. زمان لازم برای ایجاد نمایه با موارد زیر تعیین میشود:
حداقل زمان ساخت برای یک نمایه چند دقیقه است، حتی برای یک پایگاه داده خالی.
زمان لازم برای پر کردن ورودیهای نمایه به مقدار دادههای موجودی که به نمایه جدید تعلق دارد بستگی دارد. هرچه مقادیر فیلد بیشتری با تعریف نمایه مطابقت داشته باشد، زمان بیشتری برای پر کردن ورودیهای نمایه لازم است.
مدیریت عملیاتهای طولانیمدت
ساختهای نمایه عملیات طولانیمدت هستند. بخشهای زیر نحوه کار با عملیات طولانیمدت برای نمایهها را شرح میدهد.
پساز شروع ایجاد نمایه، Cloud Firestore نامی یکتا به عملیات اختصاص میدهد. نامهای عملیات با پیشوند projects/PROJECT_ID/databases/DATABASE_ID/operations/ شروع میشوند،
برای مثال:
projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
هنگام مشخص کردن نام عملیات برای فرمان describe، میتوانید پیشوند را حذف کنید.
فهرست کردن همه عملیاتهای طولانیمدت
برای فهرست کردن عملیاتهای طولانی، از فرمان
gcloud firestore operations list
استفاده کنید. این فرمان عملیاتهای درحال انجام و اخیراً تکمیلشده را فهرست میکند.
عملیاتها تا چند روز پساز تکمیل فهرست میشوند:
gcloud firestore operations list
بررسی وضعیت عملیات
بهجای فهرست کردن همه عملیاتهای طولانیمدت، میتوانید جزئیات یک عملیات را فهرست کنید:
gcloud firestore operations describe operation-name
درحال تخمین زدن زمان تکمیل
وقتی عملیاتتان اجرا میشود، مقدار فیلد state را برای وضعیت کلی عملیات ببینید.
درخواست برای وضعیت عملیات طولانیمدت نیز سنجههای
workEstimated و workCompleted را برمیگرداند. workEstimated تعداد کل تخمینی
اسنادی را که یک عملیات
پردازش خواهد کرد نشان میدهد. workCompleted
تعداد اسنادی را که تاکنون پردازش شدهاند نشان میدهد. پساز تکمیل عملیات،
workCompleted نشاندهنده تعداد کل اسنادی است که
واقعاً پردازش شدهاند، که ممکن است با مقدار workEstimated متفاوت باشد.
برای برآورد پیشرفت عملیات، workCompleted را بر workEstimated تقسیم کنید.
در زیر نمونهای از پیشرفت ایجاد نمایه آورده شده است:
{
"operations": [
{
"name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
"metadata": {
"@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
"common": {
"operationType": "CREATE_INDEX",
"startTime": "2020-06-23T16:52:25.697539Z",
"state": "PROCESSING"
},
"progressDocuments": {
"workCompleted": "219327",
"workEstimated": "2198182"
}
},
},
...
وقتی عملیاتی تکمیل میشود، شرح عملیات حاوی
"done": true خواهد بود. برای نتیجه عملیات، مقدار فیلد state را ببینید. اگر فیلد done در پاسخ تنظیم نشده باشد،
عملیات تکمیل نشده است.