Canalización de Ingest del atributo de Ingest
Se muestran las correlaciones de datos completas de la especificación, la base y el esquema para la categoría Atributo.
Correlación de campos de índice de Atributo de la base de datos
La siguiente secuencia de pasos ilustra la canalización de indexación de Atributo implementada en Apache NiFi. Para obtener información sobre cómo llamar al servicio de ingesta, consulte la API del servicio de in de introducción de búsqueda. Para obtener una lista completa de los campos y parámetros del índice Elasticsearch, consulte Tipos de campos de índice de Elasticsearch .
- Crear documento de Atributo
- Asociar valores de Atributo
Etapa 1: Crear un documento de Atributo
SELECT A.ATTR_ID, COALESCE(AD.LANGUAGE_ID, L.LANGUAGE_ID) LANGUAGE_ID,
A.STOREENT_ID, A.ATTRTYPE_ID, A.ATTRUSAGE, A.IDENTIFIER, A.SEQUENCE ATTR_SEQUENCE,
A.DISPLAYABLE, A.SEARCHABLE, A.COMPARABLE, A.FACETABLE, A.MERCHANDISABLE, A.SWATCHABLE,
AD.NAME, AD.DESCRIPTION, AD.GROUPNAME, QD.QTYUNIT_ID, QD.DESCRIPTION QTY_DESCRIPTION,
L.LOCALENAME, F.MAX_DISPLAY, F.SELECTION,
F.SEQUENCE FACET_SEQUENCE, F.FACET_ID, F.SORT_ORDER, F.ZERO_DISPLAY, F.GROUP_ID, F.KEYWORD_SEARCH,
LOWER(S.SRCHFIELDNAME) || '_ntk_cs' FIELDNAME, A.STOREDISPLAY
FROM LANGUAGE L, ATTR A
LEFT JOIN ATTRDESC AD ON (A.ATTR_ID = AD.ATTR_ID AND AD.LANGUAGE_ID = ${param.langId})
LEFT JOIN QTYUNITDSC QD ON (AD.QTYUNIT_ID = QD.QTYUNIT_ID AND QD.LANGUAGE_ID = AD.LANGUAGE_ID)
LEFT JOIN FACET F ON (A.ATTR_ID = F.ATTR_ID AND
F.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
LEFT JOIN ATTRDICTSRCHCONF S ON (A.ATTR_ID = S.ATTR_ID AND
S.MASTERCATALOG_ID IN (SELECT C.CATALOG_ID FROM STORECAT C
WHERE C.MASTERCATALOG = 1 AND C.STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL
WHERE STATE = 1 AND STRELTYP_ID = -4
AND STORE_ID = ${param.storeId})))
WHERE A.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL
WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}) AND L.LANGUAGE_ID = ${param.langId} ${extAttributeAnd}
UNION
SELECT S.SRCHATTR_ID, L.LANGUAGE_ID, ${param.storeId}, NULL, NULL, 'facet' || TO_CHAR(S.SRCHATTR_ID), NULL,
1, 1, NULL, 1, NULL, 0, D.NAME, D.DESCRIPTION, NULL, NULL, NULL, L.LOCALENAME, F.MAX_DISPLAY, F.SELECTION,
F.SEQUENCE FACET_SEQUENCE, F.FACET_ID, F.SORT_ORDER, F.ZERO_DISPLAY, F.GROUP_ID, F.KEYWORD_SEARCH, S.PROPERTYVALUE, 0
FROM SRCHATTRPROP S, SRCHATTR A, FACET F, FACETDESC D, LANGUAGE L
WHERE S.PROPERTYNAME = 'facet' AND S.PROPERTYVALUE NOT LIKE 'ad%' AND S.PROPERTYVALUE NOT LIKE 'price_%'
AND S.SRCHATTR_ID = A.SRCHATTR_ID AND A.SRCHATTR_ID = F.SRCHATTR_ID
AND (A.INDEXSCOPE IN
(SELECT C.CATALOG_ID FROM STORECAT C
WHERE C.MASTERCATALOG = 1 AND C.STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL
WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
OR A.INDEXSCOPE = 0)
AND L.LANGUAGE_ID = ${param.langId} AND D.LANGUAGE_ID = L.LANGUAGE_ID AND F.FACET_ID = D.FACET_ID
ORDER BY 1
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
Campo de índice Nombre | Tipo de campo de índice | Descripción |
---|---|---|
Identificador del documento | ||
id/tienda | id_string | ID interno de la tienda propietaria; se correlaciona con ATTR.STOREENT_ID |
ID/idioma | id_string | El identificador del idioma; se correlaciona con ATTRDESC.LANGUAGE_ID |
ID/atributo | id_string | El ID interno del atributo; se correlaciona con ATTR.ATTR_ID |
identificador/especificación | id_string | Establecer en "atributo" |
identificador/tienda | id_string | Una cadena que identifica de forma exclusiva la tienda propietaria; se correlaciona con ATTR.STOREENT_ID |
identificador/idioma | id_string | El entorno local de idioma de este atributo; se correlaciona desde ATTRDESC.LANGUAGE_ID |
identifier/attribute/raw | raw | El formato original del identificador de atributo; se correlaciona con ATTR.IDENTIFIER |
identifier/attribute/normalized | normalizado | Formato normalizado del identificador de atributo; se correlaciona con ATTR.IDENTIFIER |
Datos sensibles al idioma | ||
nombre/raw | raw | El nombre que depende del idioma de este atributo; se correlaciona con ATTRDESC.NAME |
nombre/normalizado | normalizado | Igual que anteriormente |
descripción/raw | raw | Una descripción breve de este atributo; se correlaciona con ATTRDESC.DESCRIPTION |
Propiedades | ||
displayable | booleano | Identifica si este atributo se muestra en el escaparate; se correlaciona con ATTR.DISPLAYABLE |
searchable | booleano | Identifica si se puede buscar en este atributo; se correlaciona con ATTR.SEARCHABLE |
facetable | booleano | Especifica que el atributo se utiliza como una faceta en el escaparate para la navegación por facetas; se correlaciona con ATTR.FACETABLE |
comparable | booleano | Identifica si este atributo se puede utilizar para la comparación; se correlaciona con ATTR.COMPARABLE |
merchandisable | booleano | Especifica que el atributo se utiliza en la creación de normas de comercialización; se correlaciona con ATTR.MERCHANDISABLE |
swatchable | booleano | Identifica si este atributo puede visualizarse con imagen de muestra; se correlaciona con ATTR.SWATCHABLE |
cinta | boolean | Identifica si este atributo se puede utilizar como cinta para su visualización; correlacionado con ATTR. STOREDISPLAY |
group | id_string | Especifica el nombre del grupo de atributos. Todos los atributos relacionados deben crearse con el mismo nombre de grupo. |
unit/identifier | id_string | Las unidades en las que se mide este atributo; se correlaciona con ATTRVALDESC.QTYUNIT_ID |
unit/name/raw | raw | La descripción de esta unidad de cantidad; se correlaciona con QTYUNITDSC.DESCRIPTION |
Datos de navegación | ||
sequence | flotante | El orden de visualización de los atributos de un grupo de atributos o en la raíz del diccionario de atributos; se correlaciona con ATTR.SEQUENCE |
facet/limit | entero | Los valores máximos que deben mostrarse en el escaparate de la faceta; se correlaciona con FACET.MAX_DISPLAY |
facet/zero | booleano | Describe si el atributo con facetas debe mostrar valores de recuento cero; se correlaciona con FACET.ZERO_DISPLAY |
facet/multiple | booleano | Describe si el atributo con facetas permite varias selecciones; se correlaciona con FACET.SELECTION |
facet/order | entero | El orden de visualización que debe utilizarse al mostrar los valores de la faceta; se correlaciona con FACET.SORT_ORDER |
facet/search | booleano | Describe si debe incluirse la faceta en la búsqueda por palabra clave; se correlaciona con FACET.KEYWORD_SEARCH |
facet/sequence | flotante | La secuencia de la faceta que se muestra en el escaparate; se correlaciona con FACET.SEQUENCE |
facet/key | id_string | La clave normalizada que se utiliza para las reglas de búsqueda; se correlaciona con ATTRDICTSRCHCONF.SRCHFIELDNAME |
facet/group | id_string | El identificador de grupo interno de la faceta que se utilizará en el escaparate; correlacionado con FACET.GROUP_ID |
Etapa 2: Asociar valores de Atributo
SELECT LISTAGG(V.IDENTIFIER, '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) ATTRVAL_IDENTIFIER,
LISTAGG(COALESCE(VD.STRINGVALUE, ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) STRINGVALUE,
LISTAGG(COALESCE(TO_CHAR(VD.INTEGERVALUE), ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) INTEGERVALUE,
LISTAGG(COALESCE(TO_CHAR(VD.FLOATVALUE), ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) FLOATVALUE,
LISTAGG(TO_CHAR(VD.SEQUENCE), ', ') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) ATTRVAL_SEQUENCE,
LISTAGG(COALESCE(VD.QTYUNIT_ID, ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) QTYUNIT_ID,
LISTAGG(COALESCE(NULLIF(VD.IMAGE1,''), ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) IMAGE1,
LISTAGG(COALESCE(NULLIF(VD.IMAGE2,''), ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) IMAGE2,
LISTAGG(V.ATTRVAL_ID, ', ') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) ATTRVAL_ID,
LISTAGG(COALESCE(QD.DESCRIPTION, ' '), '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) QTY_DESCRIPTION,
LISTAGG(A.ATTRTYPE_ID, '###') WITHIN GROUP (ORDER BY V.ATTRVAL_ID) ATTRTYPE_ID,
A.ATTR_ID
FROM ATTR A, ATTRVAL V, ATTRVALDESC VD, QTYUNITDSC QD
WHERE A.ATTR_ID = V.ATTR_ID AND V.ATTRVAL_ID = VD.ATTRVAL_ID AND VD.LANGUAGE_ID = ${param.langId}
AND VD.QTYUNIT_ID = QD.QTYUNIT_ID AND QD.LANGUAGE_ID = VD.LANGUAGE_ID
AND A.STOREENT_ID IN (SELECT RELATEDSTORE_ID
FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}) ${extAttributeAnd}
GROUP BY A.ATTR_ID
ORDER BY A.ATTR_ID
OFFSET ${param.offset} ROWS FETCH NEXT ${param.pageSize} ROWS ONLY
A continuación, el conjunto de resultados se pasa al procesador FindAttributeValuesFromDatabase para su transformación, utilizando la tabla siguiente para correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de atributos:
Campo de índice Nombre | Tipo de campo de índice | Descripción |
---|---|---|
Valores de Atributo | ||
values/id | id_string | El ID exclusivo interno para este valor de atributo; se correlaciona con ATTRVAL.ATTRVAL_ID |
valores/identificador | id_string | El identificador externo para este valor de atributo; se correlaciona con ATTRVAL.IDENTIFIER |
valores/secuencia | flotante | Un número que determina el orden de visualización de una lista de valores de atributo permitidos para un atributo determinado; se correlaciona con ATTRVALDESC.SEQUENCE |
valores/valor/bruto | id_string | El valor de cadena de este valor de atributo; se correlaciona con ATTRVALDESC.STRINGVALUE, ATTRVALDESC.FLOATVALUE o INTEGERVALUE |
valores/valor/normalizado | normalizado | Igual que anteriormente |
values/value/image1 | raw | La vía de acceso de image1 de este valor de atributo; correlacionado con ATTRVALDESC. IMAGE1 |
valores/valor/imagen2 | raw | La ruta image2 de este valor de atributo; se correlaciona con ATTRVALDESC.IMAGE2 |
valores/unidad/identificador | id_string | El identificador de unidad de medida en el que se mide este atributo; se correlaciona con ATTRVALDESC.QTYUNIT_ID |
valores/unidad/nombre/bruto | raw | La descripción de la unidad de cantidad; se correlaciona con QTYUNITDSC.DESCRIPTION |
Ejemplos de la etapa 1
{
"LANGUAGE_ID": -1,
"STOREENT_ID": 1,
"ATTRTYPE_ID": null,
"ATTR_ID": -1013,
"ATTRUSAGE": null,
"IDENTIFIER": "facet-1013 ",
"ATTR_SEQUENCE": null,
"DISPLAYABLE": 1,
"SEARCHABLE": 1,
"COMPARABLE": null,
"FACETABLE": 1,
"MERCHANDISABLE": null,
"SWATCHABLE": 0,
"NAME": "Category",
"DESCRIPTION": "The category",
"GROUPNAME": null,
"QTYUNIT_ID": null,
"QTY_DESCRIPTION": null,
"LOCALENAME": "en_US ",
"MAX_DISPLAY": 20,
"SELECTION": 0,
"FACET_SEQUENCE": 0,
"FACET_ID": -1001,
"SORT_ORDER": 0,
"ZERO_DISPLAY": 0,
"GROUP_ID": 0,
"KEYWORD_SEARCH": 1,
"FIELDNAME": "parentCatgroup_id_search"
}
{ "update": { "_id": "1--1--1013", "_index": ".auth.1.attribute.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"identifier": {
"specification": "attribute",
"language": "en_US",
"attribute": {
"normalized": "facet-1013",
"raw": "facet-1013"
},
"key": "facet-1013"
},
"sequence": 0,
"name": {
"normalized": "Category",
"raw": "Category"
},
"displayable": true,
"description": {
"raw": "The category"
},
"facetable": true,
"id": {
"language": "-1",
"attribute": "-1013",
"store": "1"
},
"facet": {
"zero": false,
"sequence": 0,
"search": true,
"limit": 20,
"multiple": false,
"key": "parentCatgroup_id_search",
"order": 0,
"group": "0"
},
"searchable": true,
"__meta": {
"created": "2020-07-28T14:55:54.911Z",
"modified": "2020-07-28T14:55:54.911Z",
"version": {
"min": 0,
"max": 0
}
},
"swatchable": false
},
"doc_as_upsert": true
}
Ejemplos de la etapa 2
{
"ATTRVAL_IDENTIFIER": "Multi-color###Blue###Ivory###Light blue###Gray###White###Purple###Black###Denim###Taupe",
"STRINGVALUE": "Multi-color###Blue###Ivory###Light blue###Gray###White###Purple###Black###Denim###Taupe",
"INTEGERVALUE": " ### ### ### ### ### ### ### ### ### ",
"FLOATVALUE": " ### ### ### ### ### ### ### ### ### ",
"ATTRVAL_SEQUENCE": "1, 2, 3, 4, 5, 6, 7, 8, 9, 10",
"QTYUNIT_ID": "C62 ###C62 ###C62 ###C62 ###C62 ###C62 ###C62 ###C62 ###C62 ###C62 ",
"IMAGE1": " ### ### ### ### ### ### ### ### ### ",
"IMAGE2": " ### ### ### ### ### ### ### ### ### ",
"ATTRVAL_ID": "7000000000000000785, 7000000000000000786, 7000000000000000787, 7000000000000000788, 7000000000000000789, 7000000000000000790, 7000000000000000791, 7000000000000000792, 7000000000000000793, 7000000000000000794",
"QTY_DESCRIPTION": "one###one###one###one###one###one###one###one###one###one",
"ATTRTYPE_ID": "STRING ###STRING ###STRING ###STRING ###STRING ###STRING ###STRING ###STRING ###STRING ###STRING ",
"ATTR_ID": 7000000000000000000
}
{ "update": { "_id": "1--1-7000000000000000000", "_index": ".auth.1.attribute.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"values": [
{
"identifier": "Multi-color",
"sequence": 1,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000785",
"value": {
"normalized": "Multi-color",
"raw": "Multi-color"
}
},
{
"identifier": "Blue",
"sequence": 2,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000786",
"value": {
"normalized": "Blue",
"raw": "Blue"
}
},
{
"identifier": "Ivory",
"sequence": 3,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000787",
"value": {
"normalized": "Ivory",
"raw": "Ivory"
}
},
{
"identifier": "Light blue",
"sequence": 4,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000788",
"value": {
"normalized": "Light blue",
"raw": "Light blue"
}
},
{
"identifier": "Gray",
"sequence": 5,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000789",
"value": {
"normalized": "Gray",
"raw": "Gray"
}
},
{
"identifier": "White",
"sequence": 6,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000790",
"value": {
"normalized": "White",
"raw": "White"
}
},
{
"identifier": "Purple",
"sequence": 7,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000791",
"value": {
"normalized": "Purple",
"raw": "Purple"
}
},
{
"identifier": "Black",
"sequence": 8,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000792",
"value": {
"normalized": "Black",
"raw": "Black"
}
},
{
"identifier": "Denim",
"sequence": 9,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000793",
"value": {
"normalized": "Denim",
"raw": "Denim"
}
},
{
"identifier": "Taupe",
"sequence": 10,
"unit": {
"identifier": "C62",
"name": {
"raw": "one"
}
},
"id": "7000000000000000794",
"value": {
"normalized": "Taupe",
"raw": "Taupe"
}
}
],
"__meta": {
"modified": "2020-07-28T15:18:30.965Z"
}
}
}