globalSearch
Búsqueda pública a través de títulos y valores de atributos de registros visibles.
Descripción
Este método busca nombres y valores de atributos de registros a través de tipos de entidad. Devuelve una Promesa que se resuelve en un objeto IGlobalSearchResponse: la consulta para la que se ejecutó, más los registros encontrados agrupados por tipo de entidad, cada elemento llevando el contexto de cómo coincidió.
Buscar.globalSearch(
query*,
types,
visibility,
offset,
limit
);
Esquema de parámetros
Esquema
query(requerido): string
Consulta de búsqueda.
ejemplo: "invierno"
types: TGlobalSearchEntityType[]
Tipos de entidad en los que buscar, enviados separados por comas. Busca en todos los tipos cuando se omite.
ejemplo:
["products"]
Enum: [ products, pages, blocks, slides, templates, discounts, user_groups, users, admins, menus, forms, attributes_sets, attributes, orders, workflows, events, subscriptions, collections ]
visibility: 'all' | 'visible' | 'hidden'
Filtro de visibilidad de los registros buscados. Predeterminado: "todos"
ejemplo: "visible"
offset: number
Desplazamiento del modo de desglose. Pásalo solo junto con un tipo accesible único en types.
ejemplo: 0
limit: number
Tamaño de página del modo de desglose. Pásalo solo junto con un tipo accesible único en types, de lo contrario, la API responde 400 "El modo de desglose (límite/desplazamiento) requiere exactamente un tipo accesible en types". Sin él, se devuelve cada grupo en su totalidad.
ejemplo: 20
Ejemplos
Ejemplo mínimo
const response = await Search.globalSearch('winter');
Ejemplo con atributos
// Drilldown: offset/limit are accepted only alongside exactly one type.
const response = await Search.globalSearch('winter', ['products'], 'visible', 0, 20);
Renderizando los grupos
const { query, groups } = await Search.globalSearch('test');
groups.forEach((group) => {
console.log(`${group.type} (${group.items.length}${group.hasMore ? '+' : ''})`);
group.items.forEach((item) => {
// fragment is plain text — safe to highlight yourself
console.log(item.title ?? item.identifier, item.matchKind, item.fragment);
});
});
Ejemplo de respuesta
{
"query": "test",
"groups": [
{
"type": "pages",
"items": [
{
"type": "pages",
"id": 50,
"title": "Test",
"subtitle": "test",
"matchKind": "exact",
"matchedField": "url",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "blocks",
"items": [
{
"type": "blocks",
"id": 4,
"title": "test",
"identifier": "test",
"matchKind": "exact",
"matchedField": "identifier",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "discounts",
"items": [
{
"type": "discounts",
"id": 1,
"title": "Example discount",
"identifier": "example_discount",
"matchKind": "attributeValue",
"matchedField": "attributeValue",
"matchedAttribute": {
"identifier": "example_discount",
"title": "example_discount"
},
"fragment": "test value",
"langCode": "en_US"
}
],
"hasMore": false
}
]
}
Esquema de respuesta
Esquema: IGlobalSearchResponse
query: string
La consulta para la que se produjeron los resultados.
ejemplo: "invierno"
groups: IGlobalSearchGroup[]
Registros encontrados agrupados por tipo de entidad.
groups.type: TGlobalSearchEntityType
Tipo de entidad del grupo.
ejemplo: "products"
groups.items: IGlobalSearchItem[]
Registros encontrados dentro de este tipo de entidad.
groups.items.type: TGlobalSearchEntityType
Tipo de entidad del registro encontrado.
ejemplo: "products"
groups.items.id: number | string
Id de la entidad; una cadena para flujos de trabajo y atributos.
ejemplo: 12345
groups.items.title: string
Título de visualización; ausente cuando el registro no tiene un nombre propio (pedidos, usuarios sin inicio de sesión).
ejemplo: "Chaqueta de invierno"
groups.items.identifier: string
Identificador de máquina (marcador) del registro.
ejemplo: "chaqueta_invierno"
groups.items.subtitle: string
Línea secundaria (url, almacenamiento, nodo).
ejemplo: "catalogo/invierno"
groups.items.matchKind: TGlobalSearchMatchKind
Cómo coincidió el registro con la consulta.
ejemplo: "title"
groups.items.matchedField: TGlobalSearchMatchedField
Campo concreto que coincidió con la consulta.
ejemplo: "title"
groups.items.matchedAttribute: Record<string, unknown>
Atributo en el que ocurrió la coincidencia.
groups.items.fragment: string
Contexto en texto plano alrededor de la coincidencia, sin marcado.
ejemplo: "chaqueta de invierno cálida"
groups.items.langCode: string
Código de idioma del valor coincidente.
ejemplo: "es_ES"
groups.items.isVisible: boolean
Visibilidad del registro encontrado.
ejemplo: true
groups.items.parent: Record<string, unknown>
Registro propietario para entidades sin su propia página (diapositivas a bloque, pedidos a almacenamiento).
groups.items.attributeSetId: number
Id del conjunto de atributos propietario; solo para type=attributes.
ejemplo: 12
groups.hasMore: boolean
Si hay más registros de este tipo disponibles más allá de la página solicitada.
ejemplo: false
ℹ️
offsetylimitrequieren exactamente un tipo accesible entypes; cualquier otra combinación responde 400. Omite ambos para obtener cada grupo en su totalidad - consulta Modo de desglose.