Ampliación de los conectores Ingest

HCL Commerce proporciona conectores de ingesta predeterminados que realizan tareas de ingesta y transformación de datos para preparar los datos del índice de búsqueda. Puede usarlos tal cual o puede personalizar estos conectores de ingesta predeterminados según los requisitos empresariales mediante la API de servicio de ingesta de búsqueda. Este tema describe las personalizaciones que puede realizar y cómo puede gestionarlas y trasladarlas a diferentes versiones.

Personalizaciones

Puede realizar los siguientes dos tipos de personalizaciones en los conectores de Ingest por defecto:
Personalizar la estructura de los conectores Ingest por defecto (actualización)

Realice cambios estructurales en los conectores ingeridos predeterminados. Un cambio estructural se refiere a la adición o eliminación de canalizaciones (grupos de procesos) de los conectores predeterminados. Por ejemplo, agregar canalizaciones de margen de beneficio al conector auth.reindex predeterminado.

Para realizar el cambio estructural:
  1. 1. Obtenga el JSON completo del descriptor del conector específico utilizando el punto final, GET /connector/{connectorID}
    Note: También puede recuperar el descriptor JSON completo del conector específico desde el contenedor de Ingest, profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments
  2. Después de recuperar el JSON completo, copie el descriptor completo en un nuevo archivo y edite la estructura según sus requisitos.
  3. Utilice la API de actualización con el descriptor del conector completo (ConnectorDescriptorJson) que tiene el cambio estructural.
Ejemplo
El siguiente es un ejemplo que muestra el flujo completo de los cambios estructurales realizados en el conector auth.reindex insertando una nueva sección de descriptor de conector personalizada para un canal personalizado.
  1. GET http://\INGEST_HOST:INGEST_PORT/connectors/auth.reindex
    {
      "id": "auth.reindex",
      "name": "auth.reindex",
      "description": "This is the connector to perform a full re-indexing.  This operation involves multiple indexing pipelines executed in a sequential fashion.",
      "created": "2022-01-18T22:56:06.657",
      "modified": "2022-01-18T22:56:06.657",
      "pipes": [
        {
          "name": "ResetLink",
          "label": "ResetLink",
          "properties": [
            {
              "name": "flow.database.listagg",
              "value": "true",
              "scope":
    
    {             "name": "Assign Database Setting",             "type": "PROCESS_GROUP"           }
            },
    .
    .
    .
    
        {
          "name": "Terminal",
          "label": "Terminal",
          "properties": [
            {
              "name": "connector.name",
              "value": "auth.reindex",
              "scope":
    
    {             "name": "Terminal",             "type": "PROCESS_GROUP"           }
            },
            {
              "name": "pipe.name",
              "value": "Terminal",
              "scope":
    
    {             "name": "Terminal",             "type": "PROCESS_GROUP"           }
            }
          ]
        }
      ]
    }
  2. Edite sobre JSON para añadir la información de descriptor de conector de canalización personalizada a la ubicación adecuada en el conector auth.reindex. Para obtener más información, consulte la guía de aprendizaje Elasticsearch Profit Margin: Personalice el descriptor del conector del conector existente con personalización de margen de beneficio
    {
    "name": "ProfitMarginSchemaUpdateConnector"
    },
    {
    "name": "ProfitMarginDatabaseConnectorPipe",
    "properties": [
    {
    "name": "Database Driver Location(s)",
    "value": "${AUTH_JDBC_DRIVER_LOCATION}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database Driver Class Name",
    "value": "${AUTH_JDBC_DRIVER_CLASSNAME}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database Connection URL",
    "value": "${AUTH_JDBC_URL}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Database User",
    "value": "${AUTH_JDBC_USER_NAME}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    },
    {
    "name": "Password",
    "value": "${AUTH_JDBC_USER_PASSWORD}",
    "scope": {
    "name": "Database Connection Pool",
    "type": "CONTROLLER_SERVICE"
    }
    }
    ]
    }
  3. POST http://\INGEST_HOST : INGEST_PORT/connectors/auth.reindex/upgrade con el nuevo JSON para actualizar el conector con su personalización.
Personalizar la propiedad y la configuración de los componentes por defecto/existentes (actualización)
Realice cambios de propiedades y configuración en los grupos de procesos, procesadores, conexiones y servicios responsables. Para realizar estos cambios, coloque el archivo JSON del descriptor de actualización dentro del contenedor en la carpeta (/profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization). En función de esto, la API de servicio de ingesta de búsqueda ejecuta automáticamente la API de actualización con este JSON del descriptor de actualización proporcionado para personalizar las propiedades y la configuración de los conectores de ingesta predeterminados.
Note: Para obtener más información sobre cómo crear un JSON de descriptor de actualización, consulte Actualización del grupo de procesos NiFi, del procesador y del servicio del responsable mediante el descriptor del conector Ingest

Gestionar las personalizaciones

Mantener las personalizaciones e implementar otros entornos con personalizaciones requiere:
  • Mejore o actualice el cuerpo JSON en función de las personalizaciones que realice (cambio de estructura o cambio de configuración y propiedad).
    Note: La API de mejora también puede realizar la funcionalidad de la API de actualización.
  • Para actualizar la API, asegúrese de que la canalización y la propiedad existen en el grupo de procesos, el procesador, la conexión y el servicio de controlador.
  • Para actualizar la API, asegúrese de que la canalización se agrega al Registro.
Warning: Todo el procesamiento del servicio de Ingesta en NiFi debe completarse antes de iniciar la API de actualización para actualizar los grupos de procesos de canalización (flujos de datos). NiFi debería mostrar que no hay datos en cola, indicados por "0 / 0 bytes" en la barra de estado de la interfaz de usuario de NiFi. Se puede permitir que los procesos del Servicio de ingesta se completen o se pueden cancelar utilizando el punto final "cancelar" de los Conectores de ingesta, como se describe en Gestionar conectores en el servicio Ingestion.

Si la API de actualización se ejecutó con datos en cola o con procesos de servicio de Ingesta en marcha y la barra de estado de NiFi UI indica componentes no válidos, el proceso de actualización fallará. La cola debe despejarse localizando los Grupos de Proceso en la tubería que ha puesto en cola los datos del archivo de flujo. Detener los grupos de procesos que tienen datos en cola. Para obtener más información, consulte Detención de un componente.

Después de que el grupo de procesos se detenga, haga clic con el botón derecho en el grupo de procesos y pulse Vaciar todas las colas. Una vez que se han borrado las colas para la canalización, vuelva a ejecutar la API de actualización para el conector asociado con la canalización. Por ejemplo,
/connectors/auth.reindex/upgrade

Mover personalizaciones a través de versiones

Implementación de Kubernetes

El script de implementación comprueba la versión de las imágenes NiFi. Si coincide, entonces Nifi PV no se borra. Si no coincide, entonces Nifi PV se borra. Cuando se borra el PV, todas las personalizaciones realizadas en la versión anterior también se borran.

Cuando todas las personalizaciones que se realizan en la versión anterior se borran, entonces:
  • Cualquier personalización relacionada con la estructura debe realizarse manualmente de nuevo siguiendo el proceso mencionado en la sección Personalizaciones.
  • Las personalizaciones relacionadas con la propiedad y la configuración se pueden realizar automáticamente mediante Ingest:
    1. Inicie el servicio de Docker de Ingest.
    2. Mueva el JSON del descriptor de actualización dentro del contenedor, /profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization
    3. Compromete el contenedor para crear una imagen personalizada.
    4. Utilice el script de implementación normal con una etiqueta de imagen de Ingest personalizada.