Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

إدارة الفهارس في Cloud Firestore

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

قم بإنشاء فهرس مفقود من خلال رسالة خطأ

إذا حاولت إجراء استعلام مركب باستخدام عبارة نطاق لا يتم تعيينها إلى فهرس موجود ، فستتلقى خطأ. تتضمن رسالة الخطأ ارتباطًا مباشرًا لإنشاء الفهرس المفقود في وحدة تحكم Firebase.

اتبع الرابط الذي تم إنشاؤه إلى وحدة تحكم Firebase ، وراجع المعلومات التي يتم ملؤها تلقائيًا ، وانقر فوق إنشاء .

استخدم وحدة تحكم Firebase

لإنشاء فهرس جديد يدويًا من وحدة تحكم Firebase:

صورة لواجهة فهرسة firestore في وحدة تحكم Firebase

  1. انتقل إلى قسم Cloud Firestore في وحدة تحكم Firebase .
  2. انتقل إلى علامة التبويب فهارس وانقر فوق إضافة فهرس .
  3. أدخل اسم المجموعة وقم بتعيين الحقول التي تريد ترتيب الفهرس بها.
  4. انقر فوق إنشاء .

يمكن أن يستغرق إنشاء الفهارس بضع دقائق ، بناءً على حجم الاستعلام. بعد إنشائها ، يمكنك رؤية الفهارس وحالتها في قسم الفهارس المركبة. إذا كانوا لا يزالون قيد الإنشاء ، فإن وحدة تحكم Firebase تتضمن شريط حالة المبنى.

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

لحذف فهرس:

  1. انتقل إلى قسم Cloud Firestore في وحدة تحكم Firebase .
  2. انقر فوق علامة التبويب فهارس .
  3. مرر مؤشر الماوس فوق الفهرس الذي تريد حذفه وحدد حذف من قائمة السياق.
  4. قم بتأكيد رغبتك في حذفه بالنقر فوق حذف من التنبيه.

استخدم Firebase CLI

يمكنك أيضًا نشر الفهارس باستخدام Firebase CLI . للبدء ، قم بتشغيل firebase init firestore في دليل المشروع. أثناء الإعداد ، ينشئ Firebase CLI ملف JSON بالفهارس الافتراضية بالتنسيق الصحيح. قم بتحرير الملف لإضافة المزيد من الفهارس ونشره باستخدام أمر firebase deploy . إذا كنت تريد فقط نشر الفهارس ، فأضف علامة --only firestore:indexes flag. إذا أجريت تعديلات على الفهارس باستخدام وحدة تحكم Firebase ، فتأكد أيضًا من تحديث ملف الفهارس المحلي. راجع مرجع تعريف فهرس JSON .

وقت بناء الفهرس

لإنشاء فهرس ، يجب على Cloud Firestore إعداد الفهرس ثم إعادة تعبئة الفهرس بالبيانات الموجودة. وقت إنشاء الفهرس هو مجموع وقت الإعداد ووقت إعادة التعبئة:

  • يستغرق إعداد الفهرس بضع دقائق. الحد الأدنى لوقت بناء الفهرس هو بضع دقائق ، حتى لقاعدة بيانات فارغة.

  • يعتمد وقت إعادة التعبئة على مقدار البيانات الموجودة التي تنتمي إلى الفهرس الجديد. كلما زادت قيم الحقول التي تطابق تعريف الفهرس ، كلما طالت مدة إعادة تعبئة الفهرس.

عمليات إنشاء الفهرس هي عمليات طويلة الأمد .

بعد بدء إنشاء فهرس ، يقوم Cloud Firestore بتعيين اسم فريد للعملية. تكون أسماء العمليات مسبوقة projects/[PROJECT_ID]/databases/(default)/operations/ ، على سبيل المثال:

projects/project-id/databases/(default)/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 تعيين الحقل "تم" في الاستجابة ، فإن قيمته false . لا تعتمد على وجود القيمة done للعمليات الجارية.

أخطاء بناء الفهرس

قد تواجه أخطاء في بناء الفهرس عند إدارة الفهارس المركبة وإعفاءات الفهرس أحادي الحقل. يمكن أن تفشل عملية الفهرسة إذا واجهت Cloud Firestore مشكلة في البيانات التي تقوم بفهرستها. الأكثر شيوعًا ، هذا يعني أنك وصلت إلى حد المؤشر . على سبيل المثال ، ربما وصلت العملية إلى الحد الأقصى لعدد مدخلات الفهرس لكل مستند.

إذا فشل إنشاء الفهرس ، فسترى رسالة الخطأ في وحدة التحكم. بعد أن تتحقق من أنك لا تصل إلى أي حدود للفهرس ، أعد تجربة عملية الفهرس.