La consola de OpenSearch ofrece cuatro métodos para definir el esquema de una aplicación. OpenSearch Industry Algorithm Edition admite esquemas de varias tablas, lo que permite modelar relaciones de datos complejas entre una tabla principal y hasta 10 tablas secundarias. Durante la indexación, OpenSearch ejecuta un LEFT JOIN sobre estas tablas para generar una tabla ancha, que sirve como base para construir el índice de búsqueda.
Funcionamiento
Durante la indexación, OpenSearch ejecuta un LEFT JOIN entre la tabla principal y todas las tablas secundarias asociadas. El resultado es una tabla ancha cuyo número de filas coincide con el de la tabla principal: un documento de búsqueda por cada registro principal. Los campos de las tablas secundarias sin un registro coincidente se rellenan con valores predeterminados: 0 para campos INT y null para campos STRING.
El índice se construye a partir de esta tabla ancha y procesa todas las consultas de búsqueda.

Reglas de asociación
Siga estas reglas al diseñar un esquema de varias tablas:
Una sola tabla principal por aplicación. Únicamente una tabla puede actuar como tabla principal.
Proporción de registros N:1 o 1:1 exclusivamente. Cada registro de la tabla principal se asigna, como máximo, a un registro de la tabla secundaria. Un solo registro principal no puede vincularse a varios registros secundarios (no se admite la relación 1:N).
Asociación basada en claves. Una tabla secundaria se une a la principal mediante su clave primaria, la cual debe coincidir con una clave foránea en la tabla principal. La clave foránea de la tabla principal solo puede hacer referencia a la clave primaria de una tabla secundaria.
Mismo tipo de campo obligatorio. Los campos solo pueden asignarse entre tablas si comparten el mismo tipo. Por ejemplo, una clave primaria INT en una tabla secundaria únicamente puede asignarse a un campo INT en la tabla principal.
Hasta dos niveles de asociación para aplicaciones estándar; las aplicaciones exclusivas admiten hasta tres niveles.
Hasta 10 tablas secundarias por aplicación; las aplicaciones exclusivas pueden superar este límite.
Patrones de asociación compatibles
|
Patrón |
Asociación |
Compatible |
|
Principal + 1 secundaria |
Principal → Secundaria |
Sí |
|
Principal + 2 secundarias en cadena |
Principal → B → C |
Sí |
|
Principal + varias secundarias (fan-out) |
Principal → B, Principal → C, Principal → D (≤2 niveles, ≤10 tablas) |
Sí |
|
Principal + cadena de 3 niveles |
Principal → B → C → D (>2 niveles) |
No, excepto en aplicaciones exclusivas (hasta 3 niveles) |
|
Asociación cíclica |
Principal → B, B → Principal |
No |
|
Principal + >10 secundarias |
Más de 10 tablas secundarias |
No, excepto en aplicaciones exclusivas |
![]()
![]()
![]()
Límites y notas operativas
Retraso en actualizaciones cuando N es grande
Si la proporción de registros entre la tabla principal y la secundaria es N:1 y N tiene un valor elevado, actualizar un solo registro secundario desencadena N actualizaciones en el índice de la tabla principal. Esto puede provocar retrasos en la actualización de ambas tablas. Mantenga N en 10 o menos para minimizar este riesgo.
Valores predeterminados para campos sin coincidencia
Tras ejecutar el LEFT JOIN, cualquier campo de la tabla secundaria que no tenga un registro coincidente en la principal se rellena con un valor predeterminado en la tabla ancha:
|
Tipo de campo |
Valor predeterminado |
|
INT |
|
|
STRING |
|