Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Administrar índices en Cloud Firestore

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Cloud Firestore garantiza el rendimiento de las consultas al requerir un índice para cada consulta. Los índices necesarios para las consultas más básicas se crean automáticamente para usted. A medida que usa y prueba su aplicación, Cloud Firestore genera mensajes de error que lo ayudan a crear índices adicionales que requiere su aplicación. Esta página describe cómo administrar sus índices compuestos y de un solo campo .

Crear un índice faltante a través de un mensaje de error

Si intenta una consulta compuesta con una cláusula de rango que no se asigna a un índice existente, recibe un error. El mensaje de error incluye un enlace directo para crear el índice que falta en la consola de Firebase.

Siga el enlace generado a la consola de Firebase, revise la información completada automáticamente y haga clic en Crear .

Usar la consola de Firebase

Para crear manualmente un nuevo índice desde la consola de Firebase:

imagen de la interfaz de indexación de firestore en firebase console

  1. Vaya a la sección Cloud Firestore de Firebase console .
  2. Vaya a la pestaña Índices y haga clic en Agregar índice .
  3. Ingrese el nombre de la colección y establezca los campos por los que desea ordenar el índice.
  4. Haz clic en Crear .

Los índices pueden tardar unos minutos en crearse, según el tamaño de la consulta. Después de crearlos, puede ver sus índices y su estado en la sección Índices compuestos. Si todavía están construyendo, Firebase console incluye una barra de estado de construcción.

Eliminar índices

Para eliminar un índice:

  1. Vaya a la sección Cloud Firestore de Firebase console .
  2. Haga clic en la pestaña Índices .
  3. Pase el cursor sobre el índice que desea eliminar y seleccione Eliminar en el menú contextual.
  4. Confirme que desea eliminarlo haciendo clic en Eliminar de la alerta.

Usar la CLI de Firebase

También puede implementar índices con Firebase CLI . Para comenzar, ejecute firebase init firestore en el directorio de su proyecto. Durante la configuración, Firebase CLI genera un archivo JSON con los índices predeterminados en el formato correcto. Edite el archivo para agregar más índices e firebase deploy de firebase. Si solo desea implementar índices, agregue la --only firestore:indexes . Si realiza modificaciones en los índices con Firebase console, asegúrese de actualizar también su archivo de índices local. Consulte la referencia de definición de índice JSON .

Tiempo de creación del índice

Para crear un índice, Cloud Firestore debe configurar el índice y luego rellenar el índice con los datos existentes. El tiempo de creación del índice es la suma del tiempo de configuración y el tiempo de reposición:

  • Configurar un índice lleva unos minutos. El tiempo mínimo de creación de un índice es de unos minutos, incluso para una base de datos vacía.

  • El tiempo de reposición depende de la cantidad de datos existentes que pertenezcan al nuevo índice. Cuantos más valores de campo coincidan con la definición del índice, más tiempo llevará rellenar el índice.

Las compilaciones de índices son operaciones de ejecución prolongada .

Después de iniciar una compilación de índice, Cloud Firestore asigna un nombre único a la operación. Los nombres de las operaciones tienen el prefijo projects/[PROJECT_ID]/databases/(default)/operations/ , por ejemplo:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Sin embargo, puede omitir el prefijo al especificar un nombre de operación para el comando de describe .

Listado de todas las operaciones de larga duración

Para enumerar las operaciones de ejecución prolongada, usa el comando de lista de operaciones de gcloud firestore . Este comando enumera las operaciones en curso y recientemente completadas. Las operaciones se enumeran unos días después de su finalización:

gcloud firestore operations list

Verificar estado de operación

En lugar de enumerar todas las operaciones de ejecución prolongada, puede enumerar los detalles de una sola operación:

gcloud firestore operations describe operation-name

Estimación del tiempo de finalización

A medida que se ejecuta su operación, vea el valor del campo de state para conocer el estado general de la operación.

Una solicitud del estado de una operación de ejecución prolongada también devuelve las métricas workEstimated y workCompleted . Estas métricas se devuelven para el número de documentos. workEstimated muestra el número total estimado de documentos que procesará una operación. workCompleted muestra el número de documentos procesados ​​hasta el momento. Una vez que se completa la operación, workCompleted refleja la cantidad total de documentos que se procesaron realmente, lo que puede ser diferente al valor de workEstimated .

Divida workCompleted por workEstimated para obtener una estimación aproximada del progreso. La estimación puede ser inexacta porque depende de la recopilación de estadísticas retrasada.

Por ejemplo, aquí está el estado de progreso de una creación de índice:

{
  "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"
        }
       },
    },
    ...

Cuando se realiza una operación, la descripción de la operación contendrá "done": true . Ver el valor del campo de state para el resultado de la operación. Si el campo done no está establecido en la respuesta, entonces su valor es false . No dependa de la existencia del valor done para las operaciones en curso.

Errores de creación de índices

Es posible que encuentre errores de creación de índices al administrar índices compuestos y exenciones de índices de un solo campo. Una operación de indexación puede fallar si Cloud Firestore encuentra un problema con los datos que está indexando. Lo más común es que esto signifique que alcanzó un límite de índice . Por ejemplo, la operación puede haber alcanzado el número máximo de entradas de índice por documento.

Si falla la creación del índice, verá el mensaje de error en la consola. Después de verificar que no está alcanzando ningún límite de índice , vuelva a intentar su operación de índice.