Todos los productos
Search
Centro de documentos

OpenSearch:Compound data types

Última actualización: Sep 04, 2026

La Industry Algorithm Edition admite dos tipos de datos compuestos: OBJECT y NESTED. Estos tipos permiten combinar varios campos en una estructura anidada. El uso correcto de los tipos de datos compuestos mejora la precisión de las consultas, evita discrepancias y hace más eficiente la gestión de datos complejos.

Notas de uso

Los tipos OBJECT y NESTED aceptan datos JSON con la misma estructura y tienen configuraciones básicas similares. Sin embargo, su comportamiento de consulta es fundamentalmente diferente. El tipo NESTED conserva los límites del objeto, mientras que el tipo OBJECT aplana los datos.

Tipo

OBJECT

NESTED

Método de almacenamiento subyacente

Almacenamiento aplanado que pierde los límites del objeto.Por ejemplo:{ "user": [{"name":"Alice","age":30}, {"name":"Bob","age":25}] } Se almacena como:user_name: ["Alice", "Bob"]user_age: [30, 25]

Utiliza almacenamiento independiente para documentos padre e hijo, lo que conserva la integridad del objeto.

Semántica de consulta

Pueden producirse coincidencias entre objetos, pero el rendimiento es mejor.Ejemplo: user_name: "Alice" AND user_age: 25

Esto puede coincidir con diferentes objetos de usuario: Alice (edad 30) y Bob (edad 25).

La coincidencia se limita estrictamente a un solo objeto.Ejemplo: user_name: "Alice" AND user_age: 30

Solo puede coincidir con el único objeto de usuario donde name="Alice" y age=30.

Límites

Los campos internos de los tipos OBJECT y NESTED se aplanan por nivel y los niveles se unen mediante guiones bajos. Estos campos se pueden configurar en el esquema de índice y como campos de propiedad.

  • La Industry Algorithm Edition tiene los siguientes límites para los campos OBJECT y NESTED:

    • El número total de campos no puede exceder 10.

    • La profundidad máxima de anidamiento es de 5 niveles.

    • El campo en sí no puede ser una propiedad.

    • Otros campos en el mismo nivel no pueden tener nombres que comiencen con el prefijo {OBJECT_field_name}_ o {NESTED_field_name}_. Por ejemplo, si un campo OBJECT se llama abc, otro campo en el mismo nivel no puede llamarse abc_d.

    • Solo se admiten aplicaciones Dedicated.

  • Los campos internos de los tipos OBJECT y NESTED tienen los siguientes límites:

    • No son compatibles con analizadores vectoriales.

    • No se pueden configurar como campo de enrutamiento, campo de ordenamiento de índice invertido ni espacio de nombres de índice vectorial.

    • No son compatibles con índices compuestos.

    • El nombre del índice creado debe ser igual al nombre del campo.

    • No son compatibles con expresiones de ordenamiento.

    • No se pueden configurar como campo de visualización.

    • No se pueden configurar como campo de entrenamiento de modelo.

Ejemplos

Creación de aplicación

Para obtener más información sobre la sintaxis, consulte Schema.

{
  "name": "json_nested",
  "type": "NESTED",
  "primaryKey": false,
  "innerSchema": {
    "job": {
      "name": "job",
      "type": "TEXT",
      "primaryKey": false
    },
    "ssn": {
      "name": "ssn",
      "type": "LITERAL",
      "primaryKey": false
    }
  }
}

Campo

Tipo

Descripción

type

String

El tipo de datos del campo. Para obtener más detalles sobre los campos, consulte Application schema.

name

String

El nombre del campo.

primaryKey

Boolean

Indica si el campo es una clave primaria.

joinWith

Array

La colección de tablas de datos con las que se realizará la unión.

innerSchema

Object

Especifica la estructura de datos cuando el tipo de campo es OBJECT o NESTED. Se admite el anidamiento.

Envío de datos

Para un tipo OBJECT, el valor del campo es una cadena JSON.

[
    {
        "cmd": "add",
        "timestamp": 1401342874777,
        "fields": {
            "id": "1",
            "title": "This is the title",
            "json_nested": "[{\"job\":\"Other\",\"ssn\":\"abc\"}]"
        }
    },
    {
        "cmd": "update",
        "timestamp": 1401342874778,
        "fields": {
            "id": "1",
            "json_nested": "{\"job\":\"Security Officer\",\"ssn\":\"abc\"}" // Can be a single object
        }
    },
    {
        "cmd": "delete",
        "fields": {
            "id": "1"
        }
    }
]

Búsqueda

  • El uso de índices para los campos internos de los tipos OBJECT y NESTED es igual que para los campos normales.

  • Para filtrar por un campo interno de un tipo NESTED, agregue sub_doc:group o sub_doc:flat a la cláusula config.

  • Para ordenar por un campo interno de un tipo NESTED, agregue sub_doc:flat a la cláusula config.

Ejemplo:

query=json_nested_job:'Other'&&filter=json_nested_ssn="abc"&&sort=json_nested_ssn;-RANK&&config=sub_doc:flat
Nota

El modo sub_doc:flat tiene un rendimiento ligeramente inferior al del modo sub_doc:group.