Référence de définition de l'index Cloud Firestore

Cloud Firestore crée automatiquement des index pour prendre en charge les types de requêtes les plus courants, mais vous permet de définir des index personnalisés et des remplacements d'index comme décrit dans les guides Cloud Firestore .

Vous pouvez créer, modifier et déployer des index personnalisés dans la console Firebase ou à l'aide de la CLI. À partir de la CLI, modifiez votre fichier de configuration d'index, avec le nom de fichier par défaut firestore.indexes.json , et déployez à l'aide de la commande firebase deploy .

Vous pouvez exporter des index avec la CLI en utilisant firebase firestore:indexes .

Un fichier de configuration d'index définit un objet contenant un tableau indexes et un tableau fieldOverrides facultatif. Voici un exemple :

{
  // Required, specify compound indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    }
  ],

  // 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: []
    }
  ]
}

Déployer une configuration d'index

Déployez votre configuration d'index avec la commande firebase deploy . Si vous souhaitez déployer uniquement des index pour les bases de données configurées dans votre projet, ajoutez l'indicateur --only firestore . Voir la référence des options pour cette commande .

Pour répertorier les index déployés, exécutez la commande firebase firestore:indexes . Ajoutez l'indicateur --database=<databaseID> pour répertorier les index d'une base de données autre que la base de données par défaut de votre projet.

Si vous apportez des modifications aux index à l'aide de la console Firebase, assurez-vous de mettre également à jour votre fichier d'index local. Pour en savoir plus sur la gestion des index, consultez les guides Cloud Firestore .

Format JSON

Index

Le schéma d'un objet du tableau indexes est le suivant. Les propriétés facultatives sont identifiées par le ? personnage.

Notez que les champs de document Cloud Firestore ne peuvent être indexés que dans un seul mode. Par conséquent, un objet de champ ne peut pas contenir à la fois les propriétés order et arrayConfig .

  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 property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

Remplacements de champs

Le schéma d'un objet du tableau fieldOverrides est le suivant. Les propriétés facultatives sont identifiées par le ? personnage.

Notez que les champs de document Cloud Firestore ne peuvent être indexés que dans un seul mode. Par conséquent, un objet de champ ne peut pas contenir à la fois les propriétés order et 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

Politique TTL

Une stratégie TTL peut être activée ou désactivée à l'aide du tableau fieldOverrides comme suit :

  // 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: []
    }
  ]

Pour conserver l'indexation par défaut dans le champ et activer une politique TTL :

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

Pour plus d'informations sur les politiques de durée de vie (TTL), consultez la documentation officielle .