Création d'un profil Ingest personnalisé et association au canal de connecteur par défaut
Dans cette rubrique, vous allez apprendre à créer un profil Ingest personnalisé et à l'associer au canal de connecteur par défaut.
Procedure
- A l'aide d'un client REST, émettez la commande POST suivante pour créer un profil Ingest DatabaseProductStage1a.
POST http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/DatabaseProductStage1a?profileType=IngestVous trouverez ci-dessous le corps de la requête. Notez qu'il obtient les noms de classe complets du fournisseur personnalisé et du post-processeur que vous avez créés précédemment dans le projet commerce-custom-search-marketplace-seller-9.1.x.x.{ "profileName": "DatabaseProductStage1a", "provider": [ "com.mycompany.data.ingest.product.providers.ChangeSQL" ], "preprocessor": [], "postprocessor": [ "com.mycompany.data.ingest.product.processors.ChangeDocument" ] }Voici la réponse attendue :{ "Profile created with name": "DatabaseProductStage1a" } - Redémarrez le conteneur query-app.
- Associez le profil Ingest personnalisé au canal de connecteur. Procédez comme suit. Pour obtenir des instructions sur l'utilisation d'un nœud final Ingest pour mettre à jour la liaison de profil Ingest en tant que variable vers un canal de connecteur, voir Mise à jour du groupe de processus NiFi, du processeur, du service de contrôleur à l'aide du descripteur de connecteur Ingest.
- Ouvrez votre interface utilisateur NiFi et accédez à
- Cliquez avec le bouton droit de la souris sur la zone de conception vide et cliquez sur Variables.

- Créez une variable avec le nom ingest.profile.name et la valeur
DatabaseProductStage1a. Cliquez sur le bouton Appliquer.
- Redémarrez le conteneur NiFi.
- Une fois que l'interface utilisateur NiFi est en cours d'exécution et qu'il n'y a pas d'erreurs ou de composants non valides, déclenchez un index complet pour
storeId=31. Cela peut être fait à l'aide du nœud final Ingest suivant.POST http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/run?storeId=31 - Vérifiez l'achèvement de l'index à l'aide du
runidobtenu dans la réponse de l'index de génération, comme dans l'exemple suivant :GET http://INGEST_HOST:INGEST_PORT/connectors/auth.reindex/runs/runid/statusL'attribut seller_description.raw est également indexé par l'index de génération et peut également être validé à partir de la console NiFi.
Accédez à . Cliquez avec le bouton droit de la souris sur .

- Cliquez sur l'icône Afficher les détails pour CONTENT_MODIFIED sous la colonne Type.

- Sélectionnez l'onglet Contenu dans la boîte de dialogue Evénement de provenance et cliquez sur le bouton Afficher.
Vous avez appris à créer un profil Ingest personnalisé et à l'associer au canal de connecteur par défaut dans cette rubrique.
Remplacement des profils de recherche Query pour modifier les zones de réponse
Dans cette rubrique, vous allez apprendre à remplacer les profils de recherche Query pour modifier les zones de réponse.
Procedure
Vous pouvez remplacer les profils de recherche par défaut en créant un profil personnalisé à l'aide du même nom que le profil par défaut. Si un profil personnalisé avec le même nom qu'un profil par défaut est disponible, le profil personnalisé est utilisé et le profil par défaut est ignoré. Pour des étapes détaillées sur le remplacement des profils de recherche, voir Configuration de votre profil de recherche personnalisé.
- Remplacez le profil de requête de recherche par défaut pour inclure l'attribut seller_description.raw supplémentaire dans la réponse de requête.
- Etendez le profil de recherche HCL_findCatalogEntrySKUs par défaut en ajoutant seller_description.raw dans la section responseFields du profil de recherche existant.
GET http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs - Exécutez l'appel GET pour extraire le profil de requête par défaut et exécutez l'appel PUT pour créer le profil de requête personnalisé à l'aide de la réponse de l'appel GET en tant que corps de requête après avoir ajouté l'attribut seller.description.raw dans JSON. Cela étendrait le profil de requête par défaut comme suit :
PUT http://QUERY_HOST:30920/search/resources/api/v2/documents/profiles/HCL_findCatalogEntrySKUs{ "profileName" : "HCL_findCatalogEntrySKUs", "indexName" : "product", "query" : { "params" : [ {"maxRows" : "1200"} ], "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" ] } } -
La réponse doit être similaire à :
{ "Profile created with name": "HCL_findCatalogEntrySKUs" } - Répétez cette étape pour le profil de recherche HCL_V2_findProductByPartNumber_Details en ajoutant seller_description.raw dans la section responseFields du profil de recherche existant.
GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/documents/profiles/HCL_V2_findProductByPartNumber_Details - Ajoutez seller_description.raw dans la section responseFields du profil de recherche existant pour l'utiliser comme corps de requête pour l'appel PUT ci-dessous afin de remplacer le profil de recherche HCL_V2_findProductByPartNumber_Details par défaut.
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 réponse doit ressembler à :{ "Profile created with name": "HCL_V2_findProductByPartNumber_Details" } - Redémarrez le conteneur du service Query.
Testez votre personnalisation pour vous assurer qu'elle a abouti.
Dans cette rubrique, vous avez décrit comment modifier les zones de réponse en remplaçant les profils de recherche Query.
Test des extensions de profil Ingest
Dans cette rubrique, vous allez apprendre à tester les extensions de profil Ingest.
Procedure
L'étape de test est la même pour les environnements de développement et d'exécution.
- Générez l'index pour le magasin EmeraldMP (storeId = 31).
- Une fois l'indexation terminée et lorsque l'interface utilisateur de NiFi affiche 0/0 octet de données mises en file d'attente, effectuez les tests suivants pour vous assurer que les zones de réponse contiennent seller_description.raw lorsque la recherche est effectuée pour les profils de recherche HCL_findCatalogEntrySKUs et HCL_V2_findProductByPartNumber_Details.
Test 1 : Vérifiez que la réponse du nœud final de requête de recherche suivant extrait seller_description.raw pour le profil HCL_findCatalogEntrySKUs.
Eexécutez la commande GET suivante à l'aide d'un client REST.GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&seller=7000000000000007002&id=14503
-
Test 2 : Vérifiez que la réponse du nœud final de requête suivant extrait seller_description.raw pour le profil HCL_V2_findProductByPartNumber_Details.
Eexécutez la commande GET suivante à l'aide d'un client REST.GET http://QUERY_HOST:QUERY_PORT/search/resources/api/v2/products?storeId=31&partNumber=MPHBA031_3103&seller=7000000000000007002