Í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 independientes de JSON y JSONB, o bien para mejorar otras consultas de búsqueda de texto completo.

Para obtener más información, consulta Cómo indexar datos JSON y Cómo indexar datos JSONB.

Tokeniza JSON y JSONB

Puedes usar la función TOKENIZE_JSON para crear un índice JSON en Google SQL 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 incluyen 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 claves determina si una clave existe en el esquema de la base de datos.

  • En GoogleSQL:

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

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

En tus consultas, puedes 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 con AND, OR y NOT.

Cómo verificar el uso del índice de búsqueda

Para verificar que tu consulta use un índice de búsqueda, busca un nodo Búsqueda de índice en el plan de ejecución de consultas.

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."
  • Los intentos de almacenar ciertos documentos JSON grandes o muy complejos en un índice de búsqueda pueden mostrar 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 todo el documento, considera extraer un subconjunto más pequeño del documento (por ejemplo, con una columna generada) y buscar en la columna.

¿Qué sigue?