Canalización de índice de catálogo de Ingest
Se muestran las correlaciones de datos completas de la especificación, la base y el esquema para la categoría Catálogo.
Correlación de campos de índice de Catálogo de la base de datos
La siguiente secuencia de pasos ilustra la canalización de indexación de Catálogo implementada en Apache NiFi. El flujo consta principalmente de dos etapas:
- Crear un documento de catálogo
- Asociar filtros de Catálogo
Paso 1 Crear un documento de catálogo
Esta etapa describe cómo transformar los datos del catálogo y cargarlos en el índice del catálogo. Empieza con la ejecución del SQL siguiente para recuperar datos de Catálogo de la base de datos de Commerce.
SELECT C.CATALOG_ID, C.IDENTIFIER, C.MEMBER_ID, D.NAME, D.SHORTDESCRIPTION,
COALESCE(D.LANGUAGE_ID, L.LANGUAGE_ID) LANGUAGE_ID,
L.LOCALENAME, T.MASTERCATALOG, F.STOREENT_ID
FROM LANGUAGE L, STORELANG F, STORECAT T, CATALOG C
LEFT OUTER JOIN CATALOGDSC D ON(C.CATALOG_ID = D.CATALOG_ID AND D.LANGUAGE_ID = ${param.langId})
WHERE T.STOREENT_ID IN (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId})
AND T.CATALOG_ID = C.CATALOG_ID AND C.CATALOG_ID = ${param.catalogId}
AND F.STOREENT_ID = ${param.storeId} AND F.LANGUAGE_ID = L.LANGUAGE_ID AND L.LANGUAGE_ID = ${param.langId}
A continuación, el conjunto de resultados se pasa al procesador CreateCatalogDocumentFromDatabase 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 Catálogo:
Campo de índice Nombre | Tipo de campo de índice | Descripción: |
---|---|---|
Identificador del documento | ||
id/catalog | id_string | ID interno del catálogo de ventas de operaciones; se correlaciona con CATALOG.CATALOG_ID |
id/member | id_string | El número de referencia interno que identifica al propietario del catálogo; se correlaciona con CATALOG.MEMBER_ID |
id/language | id_string | El idioma utilizado para todos los datos específicos del idioma de este documento para la tienda actual; se correlaciona con CATALOGDSC.LANGUAGE_ID |
identifier/specification | id_string | Establecer en "Catálogo" |
identifier/catalog | id_string | Una cadena que identifica de forma exclusiva el catálogo propietario; se correlaciona con CATALOG.IDENTIFIER |
identifier/language | id_string | La cadena de idioma de este idioma soportado; se correlaciona con CATALOGDSC.LANGUAGE_ID y LANGUAGE.LANGUAGE |
Datos sensibles al idioma | ||
name/raw | raw | El nombre que depende del idioma de este grupo de catálogo; se correlaciona con CATALOGDSC.NAME |
name/normalized | normalized | Igual que anterior |
description/raw | raw | Una descripción breve de este grupo de catálogo; se correlaciona con CATALOGDSC.SHORTDESCRIPTION |
Propiedades | ||
tipo | id_string | "master" como catálogo maestro o "sales" como catálogo de ventas; se correlaciona con STORECAT.MASTERCATALOG |
Etapa 2: Asociar filtros de Catálogo
Esta etapa describe cómo transformar los datos del filtro del catálogo y cargarlos en el índice del catálogo. Empieza con la ejecución del SQL siguiente para recuperar datos de catálogo de la base de datos de Commerce:SELECT F.STOREENT_ID, F.CATALOG_ID, F.USAGE, F.CATFILTER_ID, F.IDENTIFIER, X.EXPRESSION_ID, X.MEMBER_ID,
CAST(X.QUERY AS VARCHAR) QUERY, X.TRADING_ID
FROM EXPRESSION X, CATFILTER F
WHERE X.CATFILTER_ID = F.CATFILTER_ID
AND F.CATALOG_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}))
AND F.STOREENT_ID IN ( SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -32 AND STORE_ID = ${param.storeId} )
A continuación, el conjunto de resultados se pasa al procesador FindFiltersFromDatabase 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 Catálogo:
Para ver un ejemplo de código, consulte Ejemplos de la etapa 2.
Campo de índice Nombre | Tipo de campo de índice | Descripción: |
---|---|---|
Filtros | ||
filters/id/filter | id_string | El identificador interno del filtro de catálogo que se aplica al catálogo actual |
filters/id/contract | id_string | El identificador interno del contrato que está asociado con este filtro de catálogo para el catálogo actual |
filters/id/member | id_string | El identificador interno del propietario que está asociado con este filtro de catálogo para el catálogo actual |
filters/id/expression | raw | El identificador interno de la expresión de este filtro de catálogo |
filters/identifier | id_string | El identificador externo de este filtro de catálogo |
filters/query | raw | La cadena de consulta para representar este filtro de catálogo |
filters/usage | raw | El uso de este filtro de catálogo |
Ejemplos de la etapa 1
El código siguiente es un ejemplo de los datos de entrada para el procesador CreateCatalogDocumentFromDatabase:
{
"CATALOG_ID": 10001,
"IDENTIFIER": "Extended Sites Catalog Asset Store",
"MEMBER_ID": 7000000000000001000,
"NAME": "Extended Sites Catalog Asset Store",
"SHORTDESCRIPTION": null,
"LANGUAGE_ID": -1,
"LOCALENAME": "en_US ",
"MASTERCATALOG": "1",
"STOREENT_ID": 1
}
El procesador CreateCatalogDocumentFromDatabase transforma los datos de entrada en los siguientes datos de salida:
{ "update": { "_id": "1--1-10001", "_index": ".auth.1.catalog.202006160325",
"retry_on_conflict": 5, "_source": false } }
{
"doc": {
"identifier": {
"catalog": "Extended Sites Catalog Asset Store",
"specification": "catalog",
"language": "en_US"
},
"name": {
"normalized": "Extended Sites Catalog Asset Store",
"raw": "Extended Sites Catalog Asset Store"
},
"id": {
"catalog": "10001",
"member": "7000000000000001000",
"language": "-1",
"store": "1"
},
"type": "master",
"__meta": {
"created": "2020-07-28T18:42:27.926Z",
"modified": "2020-07-28T18:42:27.942Z",
"version": {
"min": 0,
"max": 0
}
}
},
"doc_as_upsert": true
}
Ejemplos de la etapa 2
El código siguiente es un ejemplo de los datos de entrada para el procesador FindFiltersFromDatabase.
{
"STOREENT_ID": 1,
"CATALOG_ID": 10001,
"USAGE": null,
"CATFILTER_ID": 3074457345616679000,
"IDENTIFIER": "TestCatalogFilter",
"EXPRESSION_ID": 3074457345618259500,
"MEMBER_ID": null,
"QUERY": "( +*:* -parentCatgroup_id_search:\"10001_10006\")",
"TRADING_ID": null
}
El procesador FindFiltersFromDatabase transforma los datos de entrada con store id
, language id
y catalog id
pasados de la clase NiFi FlowFile a los siguientes datos de salida:
{ "update": { "_id": "1--1-10001", "_index": ".auth.1.catalog.202006160325",
"retry_on_conflict": 5, "_source": false } }
{
"doc": {
"filters": [
{
"identifier": "TestCatalogFilter",
"usage": "",
"query": "( +*:* -path.tree:\"10006\")",
"id": {
"filter": "3074457345616679000",
"expression": "3074457345618259500",
"contract": "",
"member": ""
}
}
],
"__meta": {
"modified": "2020-07-28T18:54:46.440Z"
}
}
}