Índices de búsqueda JSON

Además de indexar texto, el índice de búsqueda de Spanner proporciona una forma eficiente de indexar y consultar documentos JSON y JSONB. Usa índices de búsqueda para consultas JSON y JSONB independientes, o para aumentar otras consultas de búsqueda de texto completo.

Para obtener más información, consulta Indexar datos JSON e Indexar datos JSONB.

Tokenización de JSON y JSONB

Puedes usar la función TOKENIZE_JSON para crear un índice JSON en GoogleSQL o la función TOKENIZE_JSONB para crear un índice JSONB en PostgreSQL. Para obtener más información, consulta TOKENIZE_JSON y TOKENIZE_JSONB.

Consultas JSON y JSONB

Puedes usar un índice de búsqueda para acelerar las consultas que incluyan condiciones de contención de JSON y existencia de claves. La contención de JSON determina si un documento JSON está contenido en otro. La existencia de una clave determina si una clave existe en el esquema de la base de datos.

  • En GoogleSQL:

    • Expresa la contención de JSON en tu esquema mediante la función JSON_CONTAINS.
    • Crea condiciones de existencia de claves con los operadores de acceso a campos, subíndice de matriz y IS NOT NULL. Los operadores de acceso a campos y de subíndice de matriz describen una ruta de documento JSON. IS NOT NULL comprueba si existe esta ruta (por ejemplo, doc.sub.path[@index].key IS NOT NULL).
  • En PostgreSQL:

    • Expresa la contención de JSONB mediante los operadores @> y <@. Para obtener más información, consulta los operadores de JSONB.
    • Crea condiciones de existencia de claves con los operadores ?, ?| y ?&. Para obtener más información, consulta los operadores de JSONB.

En sus consultas, puede incluir varias condiciones JSON de cualquier tipo en el índice de búsqueda. También puedes incluir las condiciones JSON en una combinación lógica mediante AND, OR y NOT.

Consultar el uso del índice de búsqueda

Para comprobar que tu consulta usa un índice de búsqueda, busca un nodo Search index scan (Búsqueda de índice de búsqueda) en el plan de ejecución de la consulta.

Restricciones

  • Los índices de búsqueda, incluidos los índices de búsqueda JSON y JSONB, solo se usan en transacciones de solo lectura. Spanner puede usar índices secundarios relevantes en una transacción de lectura y escritura. Si intentas forzar el uso de un índice de búsqueda en una transacción de lectura y escritura, se produce el siguiente error: ERROR: spanner: code = "InvalidArgument", desc = "The search index AlbumsIndex cannot be used in transactional queries by default."
  • Si se intenta almacenar determinados documentos JSON grandes o muy complejos en un índice de búsqueda, es posible que se devuelva un error too many search token bytes. El tamaño del token de salida de este documento JSON debe ser inferior a 10 MB. Si no necesitas que se pueda buscar en todo el documento, puedes extraer un subconjunto más pequeño del documento (por ejemplo, mediante una columna generada) y buscar en la columna.

Siguientes pasos