مدیریت نمایه‌ها

این صفحه نحوه مدیریت نمایه‌ها را برای Firestore Enterprise edition شرح می‌دهد.

برای کسب اطلاعات بیشتر درباره نمایه‌های نسخه Firestore Enterprise، به نمای کلی نمایه‌ها مراجعه کنید.

قبل از شروع

قبل‌از اینکه بتوانید نمایه‌ای در Cloud Firestore ایجاد کنید، مطمئن شوید که یکی از نقش‌های زیر به شما اختصاص داده شده است:

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

برای اعطای نقش، اعطای یک نقش را ببینید. برای اطلاعات بیشتر درباره نقش‌های Cloud Firestore و اجازه‌های مرتبط، به نقش‌های ازپیش‌تعریف‌شده مراجعه کنید.

اگر نقش‌های سفارشی تعریف کرده‌اید، همه اجازه‌های زیر را برای ایجاد نمایه‌ها اختصاص دهید:

  • datastore.indexes.create
  • datastore.indexes.delete
  • datastore.indexes.get
  • datastore.indexes.list
  • datastore.indexes.update

ایجاد نمایه

برای ایجاد نمایه، مراحل زیر را تکمیل کنید:

کنسول Firebase
  1. در کنسول Firebase، به صفحه Firestore Database بروید.

    رفتن به Firestore Database

  2. پایگاه داده‌ای را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در برگه نمایه‌ها، روی ایجاد نمایه کلیک کنید.
  4. شناسه مجموعه را وارد کنید.
  5. یک یا چند مسیر فیلد اضافه کنید و برای هرکدام یک گزینه نمایه انتخاب کنید.
  6. گزینه حضور فیلد را انتخاب کنید، یا غیرپراکنده یا پراکنده.
  7. روی ایجاد کردن کلیک کنید.
  8. نمایه جدیدتان در فهرست نمایه‌ها نمایش داده می‌شود و 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
  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده‌ای را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منو پیمایش، روی نمایه‌ها کلیک کنید.
  4. اختیاری: نامی برای نمایه وارد کنید.
  5. به نوع جستجو بروید و نوشتار را انتخاب کنید.
  6. شناسه مجموعه را وارد کنید.
  7. یک یا چند فیلد را برای نمایه‌سازی پیکربندی کنید.
  8. دامنه پُرسمان را برای نمایه تنظیم کنید.
  9. زبان پیش‌فرضی را انتخاب کنید.
  10. اختیاری: مسیر لغو زبان را برای نام فیلدی که حاوی تنظیم زبان سند است تنظیم کنید.
  11. روی ایجاد کردن کلیک کنید.
  12. نمایه جدیدتان در فهرست نمایه‌ها نمایش داده می‌شود و 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
  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده‌ای را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منو پیمایش، روی نمایه‌ها کلیک کنید.
  4. اختیاری: نامی برای نمایه وارد کنید.
  5. به نوع جستجو بروید و جغرافیایی (2dsphere) را انتخاب کنید.
  6. شناسه مجموعه را وارد کنید.
  7. یک یا چند فیلد را برای نمایه‌سازی پیکربندی کنید.
  8. دامنه پُرسمان را برای نمایه تنظیم کنید.
  9. روی ایجاد کردن کلیک کنید.

نمایه جدیدتان در فهرست نمایه‌ها نمایش داده می‌شود و 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
  1. در کنسول Firebase، به صفحه Firestore Database بروید.

    رفتن به Firestore Database

  2. پایگاه داده‌ای را از فهرست پایگاه‌های داده انتخاب کنید.
  3. روی برگه نمایه‌ها کلیک کنید.
  4. در فهرست نمایه‌ها، حذف را از دکمه بیشتر برای نمایه‌ای که می‌خواهید حذف کنید انتخاب کنید.
  5. روی حذف نمایه کلیک کنید.
gcloud CLI
  1. برای پیدا کردن نام نمایه، از فرمان gcloud firestore indexes composite list استفاده کنید.

    gcloud firestore indexes composite list \
    --database='DATABASE_ID'

    DATABASE_ID را با شناسه پایگاه داده جایگزین کنید.

  2. برای حذف نمایه، از فرمان 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 در پاسخ تنظیم نشده باشد، عملیات تکمیل نشده است.