مرجع تعريف مؤشر Cloud Firestore

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

يمكنك إنشاء فهارس مخصَّصة وتعديلها ونشرها في "وحدة تحكُّم Firebase" باستخدام واجهة سطر الأوامر. من واجهة سطر الأوامر، عدِّل ملف تهيئة الفهرس، باستخدام اسم الملف التلقائي firestore.indexes.json، ونشره باستخدام الأمر firebase deploy.

يمكنك تصدير الفهارس من خلال واجهة سطر الأوامر باستخدام firebase firestore:indexes.

يحدد ملف تهيئة الفهرس كائنًا واحدًا يحتوي على مصفوفة indexes ومصفوفة fieldOverrides اختيارية. وفي ما يلي مثال لذلك:

{
  // Required, specify compound and vector indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    },
    {
      collectionGroup: "coffee-beans",
      queryScope: "COLLECTION",
      fields: [
        {
          fieldPath: "embedding_field",
          vectorConfig: { dimension: 256, flat: {} }
        }
      ]
    }
  ],

  // Optional, disable indexes or enable single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "myBigMapField",
      // We want to disable indexing on our big map field, and so empty the indexes array
      indexes: []
    }
  ]
}

نشر تهيئة فهرس

فعِّل إعدادات الفهرس باستخدام الأمر firebase deploy. إذا كنت فقط لنفترض أنك تريد نشر فهارس لقواعد البيانات التي تم تكوينها في مشروعك، وأضف العلامة --only firestore. اطّلِع على مرجع الخيارات لهذا الأمر.

لسرد الفهارس المنشورة، شغِّل الأمر firebase firestore:indexes. إضافة علامة --database=<databaseID> لإدراج فهارس لقاعدة بيانات غير قاعدة البيانات الافتراضية للمشروع.

وإذا أجريت تعديلات على الفهارس باستخدام "وحدة تحكُّم Firebase"، تأكَّد أيضًا من لتعديل ملف الفهارس المحلية. لمزيد من المعلومات حول إدارة الفهارس، راجع أدلة Cloud Firestore

تنسيق JSON

المؤشرات

في ما يلي مخطط كائن واحد في المصفوفة indexes. حقل اختياري ويتم تحديدها بالحرف ?.

يُرجى العِلم أنّه يمكن فهرسة Cloud Firestore حقلاً في المستند في وضع واحد فقط. وبالتالي يمكن أن يحتوي كائن الحقل على واحد فقط من order وarrayConfig موقعان (vectorConfig)

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  queryScope: string       // One of "COLLECTION", "COLLECTION_GROUP"
  fields: array
    fieldPath: string
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig and vectorConfig properties
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order and vectorConfig properties
    vectorConfig?: object  // Indicates that this is a vector index; excludes order and arrayConfig properties
      dimension: number    // The resulting index will only include vectors of this dimension
      flat: {}             // Indicates the vector index is a flat index

عمليات إلغاء الحقل

في ما يلي مخطط كائن واحد في المصفوفة fieldOverrides. حقل اختياري ويتم تحديدها بالحرف ?.

يُرجى العِلم أنّه يمكن فهرسة Cloud Firestore حقلاً في المستند في وضع واحد فقط. وبالتالي لا يمكن أن يحتوي كائن الحقل على كلّ من order وarrayConfig. المواقع.

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  fieldPath: string
  ttl?: boolean            // Set specified field to have TTL policy and be eligible for deletion
  indexes: array           // Use an empty array to disable indexes on this collectionGroup + fieldPath
    queryScope: string     // One of "COLLECTION", "COLLECTION_GROUP"
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

سياسة مدة البقاء (TTL)

يمكن تفعيل سياسة TTL أو إيقافها باستخدام المصفوفة fieldOverrides على النحو التالي:

  // Optional, disable index single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "ttlField",
      ttl: "true",  // Explicitly enable TTL on this Field.
      // Disable indexing so empty the indexes array
      indexes: []
    }
  ]

للاحتفاظ بالفهرسة التلقائية في الحقل وتفعيل سياسة TTL:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

لمزيد من المعلومات عن سياسات مدة البقاء (TTL)، راجِع المستندات الرسمية.