Canalización de índice de categoría de Ingest
Se muestran las correlaciones de datos completas de especificación, base de datos y esquema para la categoría.
Especificaciones de datos de categoría
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 .
Especificación de datos:
Nombre de campo de datos | Tipo de datos | Valor de datos |
---|---|---|
/uniqueId | long | El identificador interno de grupo de catálogo de Commerce. |
/identifier | string | El identificador externo del grupo de catálogo. |
/parentCategories/parentCategoryId | long | El identificador interno de categoría de Commerce de la categoría padre de este grupo de catálogo. |
/parentCategories/categoryIdentifier | string | El identificador de categoría externo de la categoría padre. |
/parentCategories/catalogId | long | El identificador interno de catálogo de Commerce. Si no se especifica, se utiliza el catálogo predeterminado de la tienda. |
/parentCategories/catalogIdentifier | string | El identificador de catálogo externo de la categoría padre. |
/parentCategories/sequence | float | El número de secuencia que se utiliza para determinar el orden de visualización en esta categoría padre. |
/descriptions/languageId | entero | El identificador interno de idioma de Commerce. Si no se especifica, se utilizará "locale". Si no se ha especificado un "locale", se utilizará el idioma por omisión de la tienda. |
/descriptions/locale | string | El identificador de entorno local. |
/descriptions/name | string | El nombre que depende del idioma de este grupo de catálogo. |
/descriptions/description | string | Una descripción breve de este grupo de catálogo. |
/descriptions/longDescription | string | La descripción completa de este grupo de catálogo. |
/descriptions/keywords | string | Una lista de palabras clave utilizada para efectuar búsquedas. |
/descriptions/thumbnail | string | La vía de acceso de imagen en miniatura de este grupo de catálogo. |
/descriptions/fullImage | string | La vía de acceso de la imagen de tamaño normal de este grupo de catálogo. |
/descriptions/published | boolean | Indica si este grupo de catálogo debe visualizarse para el idioma actual. El valor predeterminado es false. |
/descriptions/sequence | float |
Correlación de campos de índice de categoría de la especificación de datos
- Cargar documentos de categoría
- Crear jerarquía de catálogo y rutas de navegación para cada categoría de ventas
Paso 1 Cargar un documento de Categoría
Esta etapa describe cómo se puede transformar los datos de categoría utilizando el script Groovy CreateCategoryDocument y se carga en el índice de Ccategoría. La siguiente tabla de correlación define cómo se pueden correlacionar los datos de la especificación de datos de Categoría en el esquema de índice de Categoría en Elasticsearch.
Campo de índice Nombre | Tipo de campo de índice | Cómo se puede asignar el valor |
---|---|---|
id/tienda | id_integer | Establecido por el procesador InjectMetaData |
ID/idioma | id_integer | Asignado directamente desde el campo de datos "languageId" |
id/catalog | id_long | Establecido por el procesador InjectMetaData |
id/catgroup | id_long | Asignado directamente desde el campo de datos "uniqueId" |
id/member | id_long | |
identifier/specification | id_string | Establezca siempre en "categoría" |
identifier/store | id_string | Establecido por el procesador InjectMetaData |
identifier/language | id_string | Extraído solo de la parte de idioma del campo de datos "entorno local" |
identifier/catalog | id_string | Establecido por el procesador InjectMetaData |
identifier/category/raw | raw | Asignado directamente desde el campo de datos "identificador" |
identifier/category/normalized | normalizado | Igual que anterior |
name/raw | raw | Asignado directamente desde el campo de datos "nombre" |
name/normalized | normalized | Igual que anterior |
name/text | text | Igual que anterior |
description/raw | raw | Asignado directamente desde el campo de datos "Descripción" |
description/text | text | Igual que anterior |
keyword/text | text | Asignado directamente desde el campo de datos "palabra clave" |
displayable | boolean | Asignado directamente desde el campo de datos "publicado" del idioma actual |
url/thumbnail | raw | Asignado directamente desde el campo de datos "miniatura" |
url/image | raw | Asignado directamente desde el campo de datos "fullimage" |
url/seo | raw | Por determinar |
Etapa 2: Crear una jerarquía de catálogo para la navegación
{
"stored_fields": [
"id.*",
"category.*"
],
"size": 10000,
"query": {
"bool": {
"must_not": {
"exists": {
"field": "category.parent"
}
},
"filter": [
{
"term": {
"id.store": "${param.storeId}"
}
},
{
"term": {
"id.catalog": "${param.catalogId}"
}
},
{
"term": {
"id.language": "${param.langId}"
}
}
]
}
}
}
- El conjunto de resultados inicial de la consulta de búsqueda anterior devolverá todas las categorías de nivel superior del catálogo de ventas especificado. Utilizando todas las categorías hijo de este conjunto de categorías de nivel superior para generar otra consulta Elasticsearch para buscar las categorías hijo del siguiente nivel del catálogo de ventas actual.
La consulta anterior se enviará de nuevo al flujo de datos en NiFi para volver a ejecutarla.{ "stored_fields": [ "id.*", "category.*" ], "size": 10000, "query": { "bool": { "must": { "match_all": {} }, "filter": [ { "terms": { "category.parent": [ "10020", ... ] } }, { "term": { "id.store": "1" } }, { "term": { "id.catalog": "10502" } }, { "term": { "id.language": "-1" } } ] } } }
- Para todos los nodos devueltos en el nivel actual de la jerarquía de catálogo, pase por cada categoría para generar la ruta de navegación completa en este catálogo de ventas actual.
Nombre de campo de índice Tipo de campo de índice Descripción: path text Campo de señalización para la ruta de navegación completa a la categoría actual nodo en el catálogo de ventas path/tree jerarquía p.ej., /apparel/women/dresses, /apparel/women, /apparel path/reversed hierarchy_reversed p.ej., /dresses, /women/dresses, /apparel/women/dresses
Correlación de campos de índice de categoría de la base de datos
- Creación de un documento de categoría
- Actualización con información de faceta
- Creación de jerarquía de catálogo para navegación
Etapa 1 - Creación de un documento de categoría
(SELECT C.CATGROUP_ID, C.MEMBER_ID, C.IDENTIFIER,
COALESCE(D.LANGUAGE_ID, L.LANGUAGE_ID) LANGUAGE_ID,
D.NAME, D.SHORTDESCRIPTION, D.THUMBNAIL, D.FULLIMAGE,
D.PUBLISHED, D.DISPLAY, D.KEYWORD,
R.CATGROUP_ID_PARENT, R.CATALOG_ID, R.SEQUENCE, L.LOCALENAME
FROM CATGRPREL R, LANGUAGE L, CATGROUP C ${TI_DELTA_CG_JOIN_QUERY}
LEFT OUTER JOIN CATGRPDESC D ON (D.CATGROUP_ID = C.CATGROUP_ID AND D.LANGUAGE_ID = ${param.langId})
WHERE R.CATALOG_ID = ${param.catalogId}
AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
AND R.CATGROUP_ID_CHILD = C.CATGROUP_ID AND C.MARKFORDELETE = 0 AND L.LANGUAGE_ID = ${param.langId} ${extCatgroupAndSQL}
UNION
SELECT C.CATGROUP_ID, C.MEMBER_ID, C.IDENTIFIER,
COALESCE(D.LANGUAGE_ID, L.LANGUAGE_ID) LANGUAGE_ID,
D.NAME, D.SHORTDESCRIPTION, D.THUMBNAIL, D.FULLIMAGE,
D.PUBLISHED, D.DISPLAY, D.KEYWORD,
NULL, R.CATALOG_ID, R.SEQUENCE, L.LOCALENAME
FROM CATTOGRP R, LANGUAGE L, CATGROUP C ${TI_DELTA_CG_JOIN_QUERY}
LEFT OUTER JOIN CATGRPDESC D ON (D.CATGROUP_ID = C.CATGROUP_ID AND D.LANGUAGE_ID = ${param.langId})
WHERE R.CATALOG_ID = ${param.catalogId}
AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
AND R.CATGROUP_ID = C.CATGROUP_ID AND C.MARKFORDELETE = 0 AND L.LANGUAGE_ID = ${param.langId} ${extCatgroupAndSQL}) ORDER BY CATGROUP_ID
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 la tabla STORECGRP |
ID/idioma | id_string | El identificador del idioma; se correlaciona con CATGRPDESC.LANGUAGE_ID |
id/catalog | id_string | El ID interno del catálogo de ventas; se correlaciona con CATGRPREL.CATALOG_ID |
id/catgroup | id_string | El ID interno de la categoría actual; se correlaciona con CATGRPREL.CATGROUP_ID_CHILD |
id/member | id_string | El número de referencia interno que identifica al propietario del grupo de catálogo; se correlaciona con CATGROUP.MEMBER_ID |
identifier/specification | id_string | Establecer en "categoría" |
identifier/store | id_string | Una cadena que identifica de forma exclusiva la tienda propietaria; se correlaciona con la tabla STOREENT |
identifier/language | id_string | El entorno local de idioma de este grupo de catálogo; se correlaciona desde CATGRPDESC.LANGUAGE_ID |
identifier/catalog | id_string | El identificador externo del catálogo; se correlaciona con CATGRPREL.CATALOG_ID |
identifier/category/raw | raw | Igual que a continuación |
identifier/category/normalized | normalizado | Atributos básicos de Catgroup: se correlaciona con CATGROUP.IDENTIFIER |
Datos sensibles al idioma | ||
name/raw | raw | El nombre que depende del idioma de este grupo de catálogo; se correlaciona con CATGRPDESC.NAME |
name/normalized | normalized | Igual que anterior |
keyword/text | text | Palabra clave utilizada para la búsqueda; se correlaciona con CATGRPDESC.KEYWORD |
url/thumbnail | raw | La ruta de imagen en miniatura de este grupo de catálogo; se correlaciona con CATGRPDESC.THUMBNAIL |
url/image | raw | La ruta de imagen completa de este grupo de catálogo; se correlaciona con CATGRPDESC.FULLIMAGE |
Propiedades | ||
displayable | boolean | Indica si este grupo de catálogo debe visualizarse para el idioma; se correlaciona con CATGRPDESC.PUBLISHED |
Datos de navegación | ||
category/catalog | id_string | El catálogo de ventas de este documento actual utilizado para la secuencia; se correlaciona con CATGRPREL.CATALOG_ID |
category/parent | id_string | La categoría de ventas padre de este documento actual utilizada para la secuencia; se correlaciona con CATGRPREL.CATGROUP_ID_PARENT |
category/sequence | float | La secuencia de nivel de categoría de hoja (superficial) definida en CMC; se correlaciona con CATGRPREL.SEQUENCE |
Etapa 2 - Actualización con información de faceta
SELECT I.CATALOG_ID, I.CATGROUP_ID, I.CATGROUP_ID_PARENT,
LISTAGG(A.NAME, '###') WITHIN GROUP (ORDER BY A.ATTR_ID) NAME,
LISTAGG(A.ATTR_ID, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) ATTR_ID,
LISTAGG(A.IDENTIFIER, '###') WITHIN GROUP (ORDER BY A.ATTR_ID) IDENTIFIER,
LISTAGG(F.MAX_DISPLAY, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) MAX_DISPLAY,
LISTAGG(F.SELECTION, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) SELECTION,
LISTAGG(TO_CHAR(COALESCE(FCG.SEQUENCE, F.SEQUENCE)), ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) SEQUENCE,
LISTAGG(F.FACET_ID, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) FACET_ID,
LISTAGG(F.SORT_ORDER, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) SORT_ORDER,
LISTAGG(F.ZERO_DISPLAY, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) ZERO_DISPLAY,
LISTAGG(COALESCE(F.GROUP_ID, 0), ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) GROUP_ID,
LISTAGG(F.KEYWORD_SEARCH, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) KEYWORD_SEARCH,
LISTAGG(A.FACETABLE, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) FACETABLE,
LISTAGG(A.SWATCHABLE, ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) SWATCHABLE,
LISTAGG(COALESCE(A.STOREDISPLAY, 0), ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) STOREDISPLAY,
LISTAGG(COALESCE(FCG.STOREENT_ID, A.STOREENT_ID), ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) STOREENT_ID,
LISTAGG(COALESCE(FCG.DISPLAYABLE, 1), ', ') WITHIN GROUP (ORDER BY A.ATTR_ID) DISPLAYABLE
FROM (SELECT A.ATTR_ID, A.IDENTIFIER, A.FACETABLE, A.SWATCHABLE, A.STOREDISPLAY, A.STOREENT_ID, COALESCE(D.NAME, DF.NAME) NAME
FROM ATTR A
LEFT JOIN ATTRDESC D ON D.ATTR_ID = A.ATTR_ID AND D.LANGUAGE_ID = ${param.langId}
LEFT OUTER JOIN ATTRDESC DF ON DF.ATTR_ID = A.ATTR_ID AND DF.LANGUAGE_ID = ${default.language}) A,
FACET F
LEFT JOIN FACETCATGRP FCG ON F.FACET_ID = FCG.FACET_ID AND FCG.STOREENT_ID = ${param.storeId},
(SELECT DISTINCT P.CATALOG_ID, P.CATGROUP_ID, C.ATTR_ID, H.CATGROUP_ID_PARENT
FROM CATGPENREL P, CATENTRYATTR C,
(SELECT G.CATGROUP_ID, R.CATALOG_ID, R.CATGROUP_ID_PARENT
FROM CATGRPREL R, CATGROUP G
WHERE R.CATALOG_ID = ${param.catalogId}
AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
AND R.CATGROUP_ID_CHILD = G.CATGROUP_ID AND G.MARKFORDELETE = 0
UNION
SELECT G.CATGROUP_ID, R.CATALOG_ID, NULL
FROM CATTOGRP R, CATGROUP G
WHERE R.CATALOG_ID = ${param.catalogId}
AND R.CATALOG_ID IN (SELECT CATALOG_ID FROM STORECAT WHERE STOREENT_ID IN
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId}))
AND R.CATGROUP_ID = G.CATGROUP_ID AND G.MARKFORDELETE = 0) H
WHERE P.CATALOG_ID = H.CATALOG_ID AND P.CATGROUP_ID = H.CATGROUP_ID
AND P.CATENTRY_ID = C.CATENTRY_ID ${extCatgroupAndSQL1a}) I
${TI_DELTA_CG_FACET_JOIN_QUERY}
WHERE I.ATTR_ID = A.ATTR_ID AND 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})
GROUP BY I.CATALOG_ID, I.CATGROUP_ID, I.CATGROUP_ID_PARENT
A continuación, el conjunto de resultados se pasa al procesador FindFacetsForCategoryFromDatabase 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 Categoría:
Campo de índice Nombre | Tipo de campo de índice | Descripción: |
---|---|---|
Datos de navegación | ||
facetas/<id>/id | id_string | El identificador de faceta interno de la faceta correspondiente; se correlaciona con faceta. FACET.FACET_ID |
facetas/<id>/clave | id_string | El identificador de faceta normalizado que se utiliza como la clave para esta entrada de faceta actual; generado a partir de ATTR.IDENTIFIER |
facetas/<id>/búsqueda | boolean | Describe si debe incluirse la faceta en la búsqueda por palabra clave; se correlaciona con FACET.KEYWORD_SEARCH |
facetas/<id>/visualizable | boolean | Describe si la faceta debe visualizarse en el escaparate; se correlaciona con FACETCATGRP.DISPLAYABLE |
facetas/<id>/secuencia | float | La secuencia de la faceta que se muestra en el escaparate; se correlaciona con FACET.SEQUENCE |
facets/<identifier>/group | id_string | El identificador de grupo interno de la faceta que se utilizará en el escaparate; correlacionado con FACET.GROUP_ID |
facetas/<id>/atributo/id | id_string | El ID de atributo interno correspondiente de la faceta actual; se correlaciona con FACET.ATTR_ID |
facetas/<id>/atributos/nombre | id_string | El nombre de atributo específico del idioma correspondiente de la faceta actual |
facets/<id>/attribute/identifier | id_string | El identificador de atributo correspondiente de la faceta actual; se correlaciona con ATTR.IDENTIFIER |
facets/<id>/attribute/displayable | boolean | Identifica si esta faceta debe visualizarse en el escaparate; se correlaciona con ATTR.DISPLAYABLE |
facets/<id>/attribute/swatchable | boolean | Identifica si esta faceta se puede utilizar con imágenes para las facetas; se correlaciona con ATTR.SWATCHABLE |
facets/<id>atributo/cinta | boolean | Identifica si este atributo se puede utilizar como cinta para su visualización; correlacionado con ATTR. STOREDISPLAY |
facets/<id>/attribute/usage | raw | Describe el uso de este atributo; se correlaciona con ATTR.ATTRUSAGE |
facets/<id>/display/limit | entero | Los valores máximos que deben mostrarse en el escaparate de la faceta; se correlaciona con FACET.MAX_DISPLAY |
facets/<id>/display/zero | boolean | Describe si el atributo con facetas debe mostrar valores de recuento cero; se correlaciona con FACET.ZERO_DISPLAY |
facets/<id>/display/multiple | boolean | Describe si el atributo con facetas permite varias selecciones; se correlaciona con FACET.SELECTION |
facets/<id>/display/order | entero | El orden de visualización que debe utilizarse al mostrar los valores de la faceta; se correlaciona con FACET.SORT_ORDER |
Por ejemplo, consulte los Etapa 2 ejemplos.
Etapa 3 - Creación de una jerarquía de catálogo para la navegación
Esta etapa describe cómo generar los datos de navegación y cargarlos en el índice de categoría. Empieza con la ejecución de la siguiente consulta de Elasticsearch con el índice de Categoría actual:
{
"stored_fields": [
"id*",
"category.*",
"name.*"
],
"size": ${es.pageSize},
"query": {
"bool": {
"must_not": {
"exists": {
"field": "category.parent"
}
},
"filter": [
{
"term": {
"id.store": "${param.storeId}"
}
},
{
"term": {
"id.catalog": "${param.catalogId}"
}
},
{
"term": {
"id.language": "${param.langId}"
}
}
]
}
}
}
{
"stored_fields": [
"id*",
"category.*",
"name.*"
],
"size": 10000,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"terms": {
"category.parent": [
"10020", ...
]
}
},
{
"term": {
"id.store": "1"
}
},
{
"term": {
"id.catalog": "10502"
}
},
{
"term": {
"id.language": "-1"
}
}
]
}
}
}
La consulta anterior se enviará de nuevo al flujo de datos en NiFi para volver a ejecutarla.
Campo de índice Nombre | Tipo de campo de índice | Descripción: |
---|---|---|
Datos de navegación | ||
category/child | id_string | La categoría de ventas hijo de este documento actual utilizada para la secuencia; se correlaciona con CATGRPREL.CATGROUP_ID_CHILD |
category/sequence | float | La secuencia de nivel de categoría de hoja (superficial) definida en CMC; se correlaciona con CATGRPREL.SEQUENCE |
path | RAW() | Campo de señalización para la ruta de navegación completa a la categoría actual nodo en el catálogo de ventas. Por ejemplo, cuando una categoría "vestido" (ID: 10001) con la ruta "/1/3/10001" está indexada para el catálogo de ventas 10502, este campo almacena el formato original de la ruta. |
path/tree | jerarquía | Es la versión con token para el campo de ruta anterior, por ejemplo, 1, 3, 10001 |
path/list | raw | Es la versión canónica para la lista de nombres del campo de ruta, p. ej. Aurora, mujer, vestido |
Ejemplos de asignación de bases de datos:
Stage 1
{
"CATGROUP_ID": 5,
"MEMBER_ID": 7000000000000001000,
"IDENTIFIER": "Girls",
"LANGUAGE_ID": -1,
"NAME": "Girls",
"SHORTDESCRIPTION": "Girls",
"LONGDESCRIPTION": null,
"THUMBNAIL": "images/catalog/apparel/girls/category/catr_app_girls.png",
"FULLIMAGE": "images/catalog/apparel/girls/category/catr_app_girls.png",
"PUBLISHED": 1,
"DISPLAY": null,
"KEYWORD": "casual, sporty, skirt, sweater, kid",
"CATGROUP_ID_PARENT": 1,
"CATALOG_ID": 10001,
"SEQUENCE": 1,
"LOCALENAME": "en_US "
}
{ "update": { "_id": "1--1-10001-5", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"identifier": {
"specification": "category",
"language": "en_US",
"category": {
"normalized": "Girls",
"raw": "Girls"
}
},
"name": {
"normalized": "Girls",
"raw": "Girls"
},
"displayable": true,
"description": {
"raw": "Girls"
},
"id": {
"catalog": "10001",
"member": "7000000000000001000",
"catgroup": "5",
"language": "-1",
"store": "1"
},
"keyword": {
"text": "casual, sporty, skirt, sweater, kid"
},
"category": {
"parent": "1",
"sequence": 1,
"catalog": "10001"
},
"url": {
"image": "images/catalog/apparel/girls/category/catr_app_girls.png",
"thumbnail": "images/catalog/apparel/girls/category/catr_app_girls.png"
},
"__meta": {
"created": "2020-07-30T13:10:34.018Z",
"modified": "2020-07-30T13:10:34.046Z",
"version": {
"min": 0,
"max": 0
}
}
},
"doc_as_upsert": true
}
Etapa 2
{
"CATALOG_ID": 10001,
"CATGROUP_ID": 10001,
"NAME": "Available Sizes",
"ATTR_ID": "7000000000000000001",
"IDENTIFIER": "swatchSize",
"MAX_DISPLAY": "-1",
"SELECTION": "0",
"SEQUENCE": "0",
"FACET_ID": "3074457345618269104",
"SORT_ORDER": "0",
"ZERO_DISPLAY": "0",
"GROUP_ID": "0",
"KEYWORD_SEARCH": "1",
"FACETABLE": "1",
"SWATCHABLE": "0",
"STOREENT_ID": "10501",
"DISPLAYABLE": "1"
}
store id
, languages id
y catalog id
pasados de la clase NiFi FlowFile a los siguientes datos de salida:
{ "update": { "_id": "1--1-10001-10001", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{
"doc": {
"__meta": {
"modified": "2020-07-30T13:42:12.819Z"
},
"facets": {
"swatchsize": {
"sequence": 0,
"search": true,
"display": {
"zero": false,
"limit": -1,
"multiple": false,
"order": 0
},
"displayable": true,
"id": "3074457345618269104",
"attribute": {
"identifier": "swatchSize",
"name": "Available Sizes",
"id": "7000000000000000001",
"swatchable": false
},
"key": "swatchsize",
"group": "0"
}
}
}
}
Etapa 3
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 6,
"relation": "eq"
},
"max_score": 0,
"hits": [
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-10",
"_score": 0,
"fields": {
"name.normalized": [
"newsletters & magazines"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"newslettersandmagazines"
],
"name.raw": [
"Newsletters & Magazines"
],
"identifier.category.raw": [
"NewslettersAndMagazines"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"10"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
6
]
}
},
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-7",
"_score": 0,
"fields": {
"name.normalized": [
"grocery"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"grocery"
],
"name.raw": [
"Grocery"
],
"identifier.category.raw": [
"Grocery"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"7"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
3
]
}
},
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-8",
"_score": 0,
"fields": {
"name.normalized": [
"health"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"health"
],
"name.raw": [
"Health"
],
"identifier.category.raw": [
"Health"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"8"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
4
]
}
},
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-6",
"_score": 0,
"fields": {
"name.normalized": [
"electronics"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"electronics"
],
"name.raw": [
"Electronics"
],
"identifier.category.raw": [
"Electronics"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"6"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
2
]
}
},
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-9",
"_score": 0,
"fields": {
"name.normalized": [
"home & furnishing"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"home furnishings"
],
"name.raw": [
"Home & Furnishing"
],
"identifier.category.raw": [
"Home Furnishings"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"9"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
5
]
}
},
{
"_index": ".auth.1.category.202006182302",
"_type": "_doc",
"_id": "1--1-10502-1",
"_score": 0,
"fields": {
"name.normalized": [
"apparel"
],
"id.member": [
"7000000000000001001"
],
"identifier.category.normalized": [
"apparel"
],
"name.raw": [
"Apparel"
],
"identifier.category.raw": [
"Apparel"
],
"category.catalog": [
"10502"
],
"identifier.language": [
"en_US"
],
"id.catgroup": [
"1"
],
"id.catalog": [
"10502"
],
"identifier.specification": [
"category"
],
"id.language": [
"-1"
],
"id.store": [
"1"
],
"category.sequence": [
1
]
}
}
]
}
}
El procesador BuildCatalogHierarchyForCategory transforma estos datos de entrada en un conjunto de datos de salida, uno para la relación siguiente y otro para la relación de actualización tal como se muestra en el diagrama de flujo NiFi.
{
"stored_fields": [
"id*",
"category.*",
"name.*"
],
"size": 10000,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"terms": {
"category.parent": [
"11",
"1",
"6",
"7",
"8",
"9",
"10"
]
}
},
{
"term": {
"id.store": "1"
}
},
{
"term": {
"id.catalog": "10001"
}
},
{
"term": {
"id.language": "-1"
}
}
]
}
}
}
{ "update": { "_id": "1--1-10001-7", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/7","category":{"path":{"name":["Grocery"],"id":["7"]}},"__meta":{"modified":"2020-07-31T12:57:33.942Z"}} }
{ "update": { "_id": "1--1-10001-9", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/9","category":{"path":{"name":["Home & Furnishing"],"id":["9"]}},"__meta":{"modified":"2020-07-31T12:57:34.409Z"}} }
{ "update": { "_id": "1--1-10001-6", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/6","category":{"path":{"name":["Electronics"],"id":["6"]}},"__meta":{"modified":"2020-07-31T12:57:34.410Z"}} }
{ "update": { "_id": "1--1-10001-1", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/1","category":{"path":{"name":["Apparel"],"id":["1"]}},"__meta":{"modified":"2020-07-31T12:57:34.410Z"}} }
{ "update": { "_id": "1--1-10001-11", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/11","category":{"path":{"name":["Hardware"],"id":["11"]}},"__meta":{"modified":"2020-07-31T12:57:34.411Z"}} }
{ "update": { "_id": "1--1-10001-8", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/8","category":{"path":{"name":["Health"],"id":["8"]}},"__meta":{"modified":"2020-07-31T12:57:34.411Z"}} }
{ "update": { "_id": "1--1-10001-10", "_index": ".auth.1.category.202006160325", "retry_on_conflict": 5, "_source": false } }
{ "doc": {"path":"/10","category":{"path":{"name":["Newsletters & Magazines"],"id":["10"]}},"__meta":{"modified":"2020-07-31T12:57:34.412Z"}} }