HCL Commerce Version 9.1.12.0

Personalización de conectores CAS predeterminados con perfiles de Ingest

En esta lección aprenderá a extraer una columna adicional de la base de datos y hacer que esté disponible como un campo adicional en la respuesta de búsqueda.

Before you begin

  • Asegúrese de haber descargado y extraído HCL_Commerce_Search_Bundle_9.1.x.0.zip del Portal de entregas y licencias de HCL. El zip extraído contendrá los datos del tutorial en la siguiente ubicación de carpeta: \dependencies\nifi\Tutorials .
  • Extraiga commerce-custom-search-marketplace-seller.zip en un directorio temporal en el entorno de desarrollo, que deberá configurarse en el kit de herramientas NiFi siguiendo el procedimiento que se describe a continuación. Este archivo incluye el código Java y las pruebas Junit de ejemplo que utiliza en este tutorial.

Procedure

  1. Cree un procesador NiFi personalizado ampliando el procesador de Ingest predeterminado en el kit de herramientas NiFi.

    Para configurar el entorno del kit de herramientas con el código fuente de ejemplo commerce-custom-search-marketplace-seller.zip proporcionado en el mismo espacio de trabajo commerce-custom-search-bundles-9.1.x.0 que se explica en el requisito previo, siga los pasos que se indican a continuación. Y para obtener más información sobre commerce-custom-search-bundles-9.1.x.0, consulte el tutorial : Personalización de conectores predeterminados con perfil de Ingest.

    Note: Puede utilizar cualquier distribución de Eclipse que incluya el plugin Maven (Maven versión 3.8.4 o posterior).
    1. Extraiga commerce-custom-search-marketplace-seller.zip en un directorio de trabajo, commerce-custom-search-marketplace-seller, que contiene un proyecto Maven con un archivo pom.xml dentro.
    2. Copie los siguientes archivos JAR obtenidos del contenedor NiFi en el directorio del proyecto commerce-custom-search-marketplace-seller/libs que se ha extraído del proyecto commerce-custom-search-marketplace-seller.zip. Para obtener más información, consulte los pasos 3 a través de 6 de los Procesadores NiFi personalizados.

      Ejemplo de V9.1.x.0:

      1. commerce-search-processors-9.1.x.0.jar
      2. hcl-cache-core-9.1.x.0-20221201.221643-25.jar
      3. cf-base-9.1.x.0-20221123.064414-9.jar

      Ingest-api.jar, que se ha incluido en la plantilla de proyecto commerce-custom-search-marketplace-seller.zip, ya está presente en esta carpeta.

    3. Actualice el archivo pom.xml del directorio raíz del proyecto commerce-custom-search-marketplace-seller y cambie las referencias del nombre del archivo a los nombres de los archivos JAR.
      Ejemplo de V9.1.x.0:
      <dependency> <groupId>com.hcl.commerce</groupId> <artifactId>dummy-commerce-search-processors</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/commerce-search-processors-9.1.x.0.jar</systemPath> </dependency> <dependency> <groupId>com.hcl.commerce</groupId> <artifactId>dummy-hcl-cache-core</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/ hcl-cache-core-9.1.x.0-20221201.221643-25.jar</systemPath> </dependency> <dependency> <groupId>com.ibm.commerce.cf</groupId> <artifactId>dummy-cf-base</artifactId> <version>9.1.x.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/cf-base-9.1.x.0-20221123.064414-9.jar</systemPath> </dependency> 
    4. Importe el proyecto extraído como un proyecto Maven a Eclipse (Archivo > Importar > Maven > Proyectos Maven existentes) y seleccione el directorio raíz commerce-custom-search-marketplace-seller. Haga clic en Finalizar. Espere a que las dependencias terminen de descargarse.

    Este proyecto tiene una clase de proveedor de expresiones personalizada ChangeSQL de ejemplo que implementa la interfaz de IngestExpressionProvider. La clase ChangeSQL amplía el SQL para incluir una columna DESCRIPTION de la tabla MPSELLERDESC para la etapa DatabaseCASProductStage1a. También incluye una columna PARTNUMBER de la tabla CATENTRY para la etapa DatabaseCASProductStage1h. Puede utilizar esta referencia de ejemplo para aprender a modificar el SQL utilizado en las etapas predeterminadas de Extracción, Transformación y Carga (ETL).

    ComposeDatabaseSQLTest es la prueba de JUnit que se puede utilizar para verificar la lógica de código de ChangeSQL.

    CahngeDocument es una extensión de postprocesador del perfil de Ingest que muestra cómo puede realizar una manipulación de datos más detallada después de la transformación predeterminada, en dos de las etapas de Ingest relacionadas con el producto.

    CreateProductDocumentFromDatabaseTest y FindChildItemsByAssetStoreFromDatabaseTest son las pruebas de JUnit que se pueden utilizar para verificar la lógica de código de ChangeDocument.

    En esta clase, si la etapa actual es DatabaseCASProductStage1a, se añade un campo seller_description adicional con el valor de la columna DESCRIPTION de la tabla "MPSELLERDESC" en el documento que se va a indexar en Elasticsearch.

    Si la etapa actual es DatabaseCASProductStage1h, se añade un campo parent_partnumber adicional con el valor de la columna PARTNUMBER de la tabla CATENTRY en el documento que se va a indexar en Elasticsearch.

    Una vez completado, el espacio de trabajo contendrá dos proyectos. El primer proyecto será commerce-custom-search-bundles, del kit de herramientas NiFi, y el segundo será el proyecto importado commerce-custom-search-marketplace-seller.

  2. Pruebe la lógica de Ingest personalizada en el kit de herramientas NiFi y compile un JAR desplegable.

    Para ejecutar la prueba de JUnit, haga clic con el botón derecho en la clase de prueba de JUnit elegida y elija Ejecutar como... o Depurar como > Prueba de JUnit.

    Ejecute también una prueba unitaria para FindChildItemsByAssetStoreFromDatabaseTest.

    1. Actualice los proyectos pulsando el botón derecho del ratón en el Proyecto y seleccione Maven > Actualizar proyecto.
    2. Seleccione commerce-custom-search-processors > commerce-custom-search-marketplace-seller > Forzar actualización de instantáneas/versiones y pulse el botón Aceptar. Vuelva a compilar los binarios para el proyecto commerce-custom-search-bundles-9.1.x.0.

      Note:
      • El proyecto de personalización commerce-custom-search-marketplace-seller no tiene dependencias en el proyecto commerce-custom-search-bundles-9.1.x.x , sin embargo, se recomienda compilar el proyecto commerce-custom-search-bundles-9.1.x.x antes de continuar con las personalizaciones. Esto puede ser útil para otras personalizaciones que pueden tener dependencias en commerce-custom-search-bundles-9.1.x.x para otros casos de uso.
      • Si nota que faltan dependencias para los archivos JAR dummy-commerce-search-processors, dummy-hcl-cache-core o dummy-cf-base, consulte Resolución de problemas: Faltan dependencias personalizadas del procesador NiFi.

      Compile los binarios para el proyecto commerce-custom-search-marketplace-seller:

      En el Explorador de proyectos, pulse con el botón derecho el proyecto commerce-custom-search-marketplace-seller-- > Ejecutar como > Compilación de Maven... (Tenga en cuenta que hay dos elementos de menú, Compilación de Maven y Compilación de Maven..., seleccione Compilación de Maven... ) Se abre la ventana Editar configuración.

      Introduzca el mandato clean install -U -Denforcer.skip=true en el cuadro de texto Objetivos y pulse el botón Ejecutar.

      Una vez finalizada la compilación, el archivo JAR estará disponible en el directorio de destino de este proyecto, por ejemplo: commerce-custom-search-marketplace-seller-9.1.x.0.jar . Para obtener más información, consulte Procesadores NiFi personalizados.

  3. Despliegue la lógica personalizada de Ingest en el servidor de Elasticsearch en el entorno de desarrollo de Commerce.

    En este paso, deberá ampliar el conector predeterminado desplegando la lógica personalizada en el contenedor NiFi de la plataforma de datos y, a continuación, deberá crear un perfil de Ingest personalizado para enlazarlo al canal del conector predeterminado.

    Despliegue el archivo JAR personalizado commerce-custom-search-marketplace-seller-9.1.10.0.jar en el contenedor NiFi en la plataforma de datos de Elasticsearch para el entorno de desarrollo de Commerce.
    1. Copie commerce-custom-search-marketplace-seller-9.1.x.0.jar del directorio de destino en el proyecto commerce-custom-search-marketplace-seller en el kit de herramientas NiFi del directorio commerce-custom-search-marketplace-seller del proyecto libs, en el directorio libs del contenedor NiFi en el servidor de datos de Elasticsearch.
      docker cp "/root/commerce-custom-search-marketplace-seller-9.1.10.0.jar" <NIFI_CONTAINER_ID>:/opt/nifi/nifi-current/lib 
      Note: (Opcional) Este tutorial de personalización es independiente del proyecto commerce-custom-search-processors-nar. Sin embargo, si la personalización depende del proyecto commerce-custom-search-processors-nar, transfiera el archivo NAR del directorio de destino del proyecto commerce-custom-search-processors-nar al directorio de extensión designado en el servidor de Elasticsearch y monte este archivo como volumen en el contenedor Docker de NiFi.

      Ignore los archivos NAR generados en proyectos distintos de commerce-custom-search-processors-nar. Para obtener más información, consulte Compilación y despliegue de un archivo NAR personalizado

      o ejemplo, podría utilizar el siguiente comando para montar el archivo NAR que se ha añadido a la carpeta /extensions, en lugar de montar la carpeta de volúmenes:HCL Commerce Version 9.1.9.0 or later
      docker run -it -p 30600:30600 --name elasticsearch_nifi_1 -v /{docker-compose dir}/volumes/nifi-ext/commerce-custom-search-processors-nar-9.1.x.x:/opt/nifi/nifi-current/extensions/commerce-custom-search-processors-nar-9.1.x.x search-nifi-app:v9-latest 

      Donde elasticsearch_nifi_1 es el contenedor NiFi del servidor de Elasticsearch y search-nifi-app:v9-latest es la imagen de NiFi.

    2. Reinicie el contenedor de NiFi.
  4. Despliegue las extensiones personalizadas del perfil de Ingest en el entorno de ejecución de producción.
    1. Cree la imagen de Docker personalizada search-nifi-app.
      Para realizar el despliegue en el tiempo de ejecución de las extensiones de personalización de Ingest, cree una imagen de Docker personalizada para search-nifi-app que incluya las personalizaciones creadas mediante el kit de herramientas NiFi.
      1. Cree una configuración de Dockerfile con el siguiente contenido:
        FROM search-nifi-app docker image COPY CusDeploy/ /opt/nifi/nifi-current/lib

        Donde CusDeploy/ contiene el commerce-custom-search-marketplace-seller-9.1.x.0.jar que ha compilado en el paso 2.

      2. HCL Commerce Version 9.1.10.0 or laterSi se aplica el siguiente parche:
        COPY patches/ /opt/nifi/nifi-current/patches FROM comlnx94.prod.hclpnp.com/9.1.x.0/search-nifi-app:v9-20220322-1524 WORKDIR /opt/nifi/scripts RUN ./patch.sh COPY CusDeploy/ /opt/nifi/nifi-current/lib

        Donde el directorio patches/ contiene el parche (JAR) que se aplicará en V9.1.10.0 y CusDeploy/ que contendrá el commerce-custom-search-marketplace-seller-9.1.x.0.jar compilado en el paso 2.

      3. HCL Commerce Version 9.1.11.0 or later
        FROM comlnx94.prod.hclpnp.com/9.1.x.0/search-nifi-app:v9-20220322-1524 COPY CusDeploy/ /opt/nifi/nifi-current/lib

        Donde CusDeploy/ contendrá el commerce-custom-search-marketplace-seller-9.1.x.0.jar compilado en el paso 2.

      4. Prepare los archivos de despliegue personalizados.
        • Cree el subdirectorio CusDeploy en el mismo directorio en el que está el archivo de Docker creado en el paso 1.
        • Copie el commerce-custom-search-marketplace-seller-9.1.x.x.jar en el directorio CusDeploy.
      5. Compile la imagen de Docker personalizada (search-nifi-app) del servidor NiFi.
        • Abra un indicador de comandos y vaya al directorio que contiene el archivo de Docker y el subdirectorio CusDeploy.
        • Ejecute el comando docker build para compilar una imagen de Docker personalizada para el servidor de NiFi (search-nifi-app) docker build -t search-nifi-app:<tag>. Por ejemplo:
          docker build -t search-nifi-app:nifi-extension .
          Note:
          • Asegúrese de que el período esté presente al final del comando docker build.
          • La etiqueta, al igual que la etiqueta de compilación del paquete de implementación, se usa para identificar la imagen personalizada de Docker. Puede modificar esto en cualquier momento para ayudar a identificar la imagen de Docker generada.
    2. Despliegue el tiempo de ejecución del servidor de datos de Elasticsearch a través de CI/CD utilizando una imagen de Docker personalizada creada en el paso 1.
      Esta tarea cubre los requisitos mínimos para una implementación basada en Docker Compose.
      • Configure un entorno de producción de HCL Commerce con el método de despliegue de Docker Compose. Para obtener información sobre cómo configurar este entorno, consulte Despliegue de HCL Commerce versión 9.1 con Docker Compose (para no producción).
      • (Opcional) Para la imagen de Docker personalizada (search-nifi-app) del servidor de NiFi, asegúrese de que tiene los siguientes parámetros de despliegue definidos correctamente en la sección de entorno del archivo de configuración docker-compose.
      Si la personalización depende del proyecto commerce-custom-search-processors-nar, transfiera el archivo NAR del directorio "target" del proyecto commerce-custom-search-processors-nar al directorio de extensión designado en el servidor de Elasticsearch y monte este archivo como volumen en el contenedor Docker de NiFi. Para obtener instrucciones más detalladas, consulte el tema Compilación y despliegue de un archivo NAR personalizado.
      volumes: - ./volumes/hcl-cache-local-redis/cache_cfg-ext.yaml:/SETUP/hcl-cache/cache_cfg-ext.yaml - ./volumes/hcl-cache-local-redis/redis_cfg.yaml:/SETUP/hcl-cache/redis_cfg.yaml - ./volumes/nifi-ext/commerce-custom-search-processors-nar-9.1.x.0.nar:/opt/nifi/nifi-current/extensions/commerce-custom-search-processors-nar-9.1.x.0.nar 
      Los pasos siguientes se deben realizar en el entorno de ejecución de la misma manera que se han realizado en el entorno de desarrollo:
      • Cree un perfil de Ingest y enlácelo a un conector predeterminado (paso paso 5.
      • Anule el perfil de consulta de búsqueda predeterminado para incluir el atributo adicional seller_description en la respuesta de la consulta (paso paso 6).
      • Compruebe que la respuesta del perfil de búsqueda contiene el atributo adicional seller_description (paso paso 7).
  5. Cree un perfil de Ingest personalizado y enlácelo a la etapa de creación (DatabaseCASProductStage1a) y a la etapa de actualización (DatabaseCASProductStage1h).

    La etapa de creación es la primera etapa del producto, categoría o atributo, por ejemplo auth.reindex.cas - Etapa de producto 1a (documento principal).

    La etapa de actualización consta del resto de las etapas, por ejemplo, auth.reindex.cas - Etapa de producto 1c (buscar URL de SEO), auth.reindex.cas - Etapa de producto 1h (buscar artículos hijo) y el resto.

    La etapa de actualización y la etapa de creación utilizan diferentes diseños de flujo, por lo que el método para añadir el perfil de Ingest personalizado es ligeramente diferente. Después de este paso, se describe cómo añadir el perfil de Ingest personalizado a la etapa de actualización.

    1. Mediante un cliente de REST, emita el siguiente comando de POST para crear un perfil de Ingest MyCustomIngestProfile.
      POST http://<QUERY_HOST>:<QUERY_PORT>/search/resources/api/v2/documents/profiles/MyCustomIngestProfile?profileType=Ingest
      A continuación se muestra el cuerpo de la solicitud. Tenga en cuenta que tiene los nombres de clase totalmente calificados del proveedor personalizado y del postprocesador que ha creado anteriormente en el proyecto commerce-custom-search-marketplace-seller-9.1.x.x.
      { "profileName": "MyCustomIngestProfile", "provider": [ "com.mycompany.data.ingest.product.providers.ChangeSQL" ], "preprocessor": [], "postprocessor": [ "com.mycompany.data.ingest.product.processors.ChangeDocument" ] } 
      A continuación se muestra la respuesta esperada:
      { "Profile created with name": "MyCustomIngestProfile" }
    2. Reinicie el contenedor query-app.
    3. Enlace el perfil de Ingest personalizado al canal del conector. Realice los pasos siguientes. Para obtener instrucciones sobre cómo utilizar un endpoint de Ingest para actualizar el enlace de perfil de Ingest como una variable a un canal de conector, consulte Actualización de un grupo de procesos, un procesador y un servicio de controladores de NiFi mediante un descriptor de conectores de Ingest.
      • Abra la interfaz de usuario de NiFi y vaya a Flujo de NiFi > auth.reindex - Etapa de producto 1a (documento principal) > Crear documentación del producto > SCROLL SQL.
      • Pulse el botón derecho del ratón sobre el lienzo vacío y haga clic en variables.

      • Cree una nueva variable con el nombre ingest.profile.name y un valor de MyCustomIngestProfile. Pulse el botón Aplicar.

  6. Añada el perfil de Ingest personalizado a la Etapa de actualización ( DatabaseCASProductStage1h).
    1. Utilizando un cliente de REST, emita el siguiente comando POST para crear un perfil de Ingest DatabaseCASProductStage1h.
      POST: http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/DatabaseCASProductStage1h?profileType=Ingest
      A continuación se muestra el cuerpo de la solicitud. Tenga en cuenta que tiene los nombres de clase totalmente calificados del proveedor personalizado y del postprocesador que ha creado anteriormente en el proyecto commerce-custom-search-marketplace-seller-9.1.x.x.
      { "profileName": "DatabaseCASProductStage1h", "provider": [ "com.mycompany.data.ingest.product.providers.ChangeSQL" ], "postprocessor": [ "com.mycompany.data.ingest.product.processors.ChangeDocument" ] } 
      A continuación se muestra la respuesta esperada:
      { "Profile created with name":"DatabaseCASProductStage1h" } 
    2. Reinicie el contenedor de NiFi.
    3. Abra la interfaz de usuario de NiFi y vaya a Flujo de NiFi > auth.reindex.cas - Etapa de producto 1h (buscar elementos hijo) > Buscar elementos hijo > Buscar elementos hijo en la base de datos.
    4. Pulse el botón derecho del ratón en el lienzo vacío. Seleccione Variables en el menú contextual.
    5. Cree una nueva variable con el nombre ingest.profile.name y un valor de DatabaseCASProductStage1h. Pulse el botón Aplicar.
      1. Ejecute un índice completo para storeId=12001. Esto se puede hacer utilizando el siguiente endpoint de Ingest.
        POST http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/run?storeId=12001
      2. Compruebe si se ha completado el índice utilizando el runid obtenido en la respuesta del índice de compilación, como en el ejemplo siguiente:
        GET http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/runs/runid/status 
      3. Una vez completada la indexación, consulte el índice de productos (por ejemplo, catentry id 14501) para verificar que la propiedad parent_partnumber está indexada.
  7. El atributo seller_description.raw también se indexa mediante el índice de compilación, y se puede validar asimismo desde la consola NiFi.
    1. Vaya a Flujo de NiFi > auth.reindex.cas - Etapa de producto 1a (documento principal) > Crear documentación del producto > Crear documentación del producto desde la base de datos. Pulse el botón derecho del ratón en Transformar documento > Crear producto desde la base de datos > Procedencia de los datos.

    2. Pulse el icono Ver detalles para CONTENT_MODIFIED en la columna Tipo.
    3. Seleccione la pestaña Contenido en el cuadro de diálogo Procedencia del suceso y haga clic en el botón Ver.
    4. Después de realizar la indexación, consulte el índice de productos (por ejemplo, seleccionando catentry id 14501) para verificar que las propiedades seller_description.raw y parent_number están indexadas.

  8. Altere temporalmente los perfiles de búsqueda de consulta para modificar los campos de respuesta.

    También puede alterar temporalmente los perfiles de búsqueda predeterminados creando un perfil personalizado usando el mismo nombre que el del perfil predeterminado. Si está disponible un perfil personalizado con el mismo nombre que un perfil predeterminado, se utiliza el perfil personalizado y se ignora el perfil predeterminado. Para ver los pasos detallados sobre cómo alterar temporalmente los perfiles de búsqueda, consulte Configuración del perfil de búsqueda personalizado.

    • Altere temporalmente el perfil de consulta de búsqueda predeterminado para incluir el atributo adicional seller_description.raw en la respuesta de la consulta.
    • Amplíe el error HCL_findCatalogEntrySKUs del perfil de búsqueda añadiendo seller_description.raw a la sección responseFields del perfil de búsqueda existente.
      GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs
      Por ejemplo:
      GET http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs 

      Para el perfil de búsqueda findCatalogEntrySKU, añada seller_description.raw a la sección ResponseFields del perfil de búsqueda existente.

      La respuesta debe ser similar a la siguiente:
      { "profileName": "HCL_findCatalogEntrySKUs", "indexName": "product", "query": { "params": [ { "maxRows": "1200" }, { "sortField": "relationship.product.sequence asc" } ], "queryFields": [ "relationship.product.id" ], "provider": [ "com.hcl.commerce.search.internal.expression.provider.SearchInventoryExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByPublishedEntryOnlyExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByStorePathExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchBySellerExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByCatalogExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByLanguageExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchProductEntitlementExpressionProvider" ], "preprocessor": [], "postprocessor": [ "com.hcl.commerce.search.internal.expression.postprocessor.SearchMainCatalogEntryViewResultQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewPriceQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewUserDataQueryPostprocessor" ], "responseFields": [ "id.catentry", "id.store", "buyable", "id.catalog", "identifier.sku.raw", "name.raw", "name.override.raw", "description.raw", "description.override.raw", "url.thumbnail", "url.override.thumbnail", "url.image", "url.override.image", "keyword.text", "manufacturer.raw", "id.member", "seller.raw", "seller_description.raw", "type", "prices.*", "path.*", "relationship.product.id", "relationship.item.id", "attribute.source", "url.seo", "url.override.seo", "attachments.*", "images.*", "description.long" ] } } 
      PUT http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs 
      La respuesta debe ser similar a la siguiente:
      { "Profile created with name": "HCL_findCatalogEntrySKUs" } 
    • Repita este paso para el perfil de búsqueda HCL_V2_findProductByPartNumber_Details añadiendo seller_description.raw en la sección responseFields del perfil de búsqueda existente.
      GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/HCL_V2_findProductByPartNumber_Details
    • Añada seller_description.raw en la sección responseFields del perfil de búsqueda existente para utilizarlo como cuerpo de solicitud para la invocación PUT que se muestra a continuación para alterar temporalmente el perfil de búsqueda predeterminado de HCL_V2_findProductByPartNumber_Details.
      PUT http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_V2_findProductByPartNumber_Details
      { "profileName": "HCL_V2_findProductByPartNumber_Details", "indexName": "product", "query": { "params": [ { "DynamicKitReturnPrice": "true" }, { "maxRows": "50" } ], "queryFields": [ "identifier.sku.normalized" ], "provider": [ "com.hcl.commerce.search.internal.expression.provider.SearchByCatalogExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByStorePathExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchBySellerExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByLanguageExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchInventoryExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchProductEntitlementExpressionProvider" ], "preprocessor": [], "postprocessor": [ "com.hcl.commerce.search.internal.expression.postprocessor.SearchMainCatalogEntryViewResultQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewPriceQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewSKUQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewAttributesQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewAttachmentsQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewImagesQueryPostProcessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewComponentsQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewMerchandisingAssocQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewUserDataQueryPostprocessor" ], "responseFields": [ "id.catentry", "id.store", "id.catalog", "buyable", "identifier.sku.raw", "name.raw", "name.override.raw", "description.raw", "description.override.raw", "url.thumbnail", "url.override.thumbnail", "keyword.text", "manufacturer.raw", "id.member", "seller.raw", "seller_description.raw", "type", "prices.*", "path.*", "relationship.item.*", "relationship.product.id", "relationship.component.*", "subscription.type", "subscription.recurring", "url.image", "url.override.image", "description.long", "attribute.source", "kit.components", "kit.preconfigured", "kit.model", "kit.URL", "kit.default_configuration", "kit.pdks", "kit.parent.model", "kit.configurable", "kit.parent.configurable", "associations.*", "url.seo", "attachments.*", "images.*" ] } } 
      La respuesta debe ser similar a la siguiente:
      { "Profile created with name": "HCL_V2_findProductByPartNumber_Details" } 
    • Reinicie el contenedor de servicios de consulta.

    Pruebe la personalización para verificar que la personalización se ha realizado correctamente.

  9. Pruebe las extensiones del perfil de Ingest.
    El paso de prueba es el mismo para los entornos de desarrollador y de ejecución.
    • Compile el índice para la tienda EmeraldCAS (storeId = 12001).
    • Una vez finalizada la indexación y cuando la interfaz de usuario de NiFi muestra datos en cola de 0/0 bytes, realice las pruebas siguientes para comprobar que los campos de respuesta contienen seller_description.raw cuando se realiza la búsqueda para los perfiles de búsqueda HCL_findCatalogEntrySKUs y HCL_V2_findProductByPartNumber_Details.
      • Prueba 1: Compruebe que la respuesta para el siguiente endpoint de consulta de búsqueda recupera seller_description.raw para el perfil HCL_findCatalogEntrySKUs .

        Ejecute el siguiente comando GET desde el cliente REST.
        GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&seller=7000000000000007002&id=14503
      • Prueba 2: Compruebe que la respuesta para el endpoint de consulta siguiente recupera seller_description.raw para el perfil HCL_V2_findProductByPartNumber_Details.

        Ejecute el siguiente comando GET desde el cliente REST.
        GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&partNumber=MPHBA031_3103&seller=7000000000000007002