لمزيد من المعلومات حول فهارس إصدار 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.
- اختَر قاعدة بيانات من قائمة قواعد البيانات.
- في علامة التبويب الفهارس، انقر على إنشاء فهرس.
- أدخِل معرّف المجموعة.
- أضِف مسار حقل واحدًا أو أكثر وحدِّد خيار فهرسة لكلّ منها.
- حدِّد خيارًا لتوفّر الحقل، إما "غير متناثر" أو "متناثر".
- انقر على إنشاء.
- يظهر الفهرس الجديد في قائمة الفهارس ويبدأ 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
-
في وحدة تحكّم 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 Console
-
في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.
- اختَر قاعدة بيانات من قائمة قواعد البيانات.
- في قائمة التنقّل، انقر على الفهارس.
- اختياري: أدخِل اسمًا للفهرس.
- انتقِل إلى نوع البحث (Search Type) واختَر الموقع الجغرافي (2dsphere) (Geo (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.
- اختَر قاعدة بيانات من قائمة قواعد البيانات.
- انقر على علامة التبويب الفهارس.
- في قائمة الفهارس، انقر على حذف من الزر المزيد للفهرس الذي تريد حذفه.
- انقر على حذف الفهرس.
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 في الاستجابة،
يعني ذلك أنّ العملية لم تكتمل.