إدارة الفهارس

توضّح هذه الصفحة كيفية إدارة الفهارس في إصدار Firestore Enterprise.

لمزيد من المعلومات عن فهارس إصدار 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 console
  1. في Firebase console، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى قاعدة بيانات Firestore

  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 Console لإنشاء فهرس نصي.

  1. في Google Cloud Console ، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. اختَر قاعدة بيانات من قائمة قواعد البيانات.

  3. في قائمة التنقّل، انقر على الفهارس.

  4. اختياري: أدخِل اسمًا للفهرس.

  5. انتقِل إلى نوع البحث واختَر نص.

  6. أدخِل رقم تعريف المجموعة.

  7. اضبط حقلًا واحدًا أو أكثر لفهرستها.

  8. اضبط نطاق طلب البحث للفهرس.

  9. اختَر لغة تلقائية.

  10. اختياري: اضبط مسارًا لتجاوز اللغة على اسم حقل يحتوي على إعداد اللغة للمستند.

  11. انقر على إنشاء.

  12. يظهر الفهرس الجديد في قائمة الفهارس و Cloud Firestore يبدأ في إنشائه. عند إنشاء الفهرس، ستظهر علامة صح خضراء بجانبه.

إنشاء فهرس جغرافي مكاني

استخدِم Google Cloud Console لإنشاء فهرس جغرافي مكاني.

  1. في Google Cloud Console ، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. اختَر قاعدة بيانات من قائمة قواعد البيانات.

  3. في قائمة التنقّل، انقر على الفهارس.

  4. اختياري: أدخِل اسمًا للفهرس.

  5. انتقِل إلى نوع البحث واختَر جغرافي (2dsphere).

  6. أدخِل رقم تعريف المجموعة.

  7. اضبط حقلًا واحدًا أو أكثر لفهرستها.

  8. اضبط نطاق طلب البحث للفهرس.

  9. انقر على إنشاء.

    يظهر الفهرس الجديد في قائمة الفهارس و Cloud Firestore يبدأ في إنشائه. عند إنشاء الفهرس، ستظهر علامة صح خضراء بجانبه.

حذف فهرس

لحذف فهرس، يُرجى إكمال الخطوات التالية:

Firebase console
  1. في Firebase console، انتقِل إلى صفحة قاعدة بيانات Firestore.

    الانتقال إلى قاعدة بيانات Firestore

  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 في الرد، يعني ذلك أنّ العملية لم تكتمل.