Fermer

mai 20, 2020

Sitecore Powershell 4: Utilisation de l'API ContentSearch avec l'aide de Find-Item


Dans les articles précédents de cette série de blogs, nous avons vu comment utiliser Get-Item et Get-ChildItem pour récupérer des éléments de notre instance Sitecore. La commande Get-ChildItem est très lente si nous avons un grand nombre d'éléments à récupérer. C'est la même chose lorsque nous essayons de récupérer un grand nombre d'éléments à l'aide de l'API Sitecore Item. L'utilisation de l'API Sitecore ContentSearch est fortement recommandée pour ce scénario.

Il en va de même pour Sitecore Powershell. Nous pouvons utiliser les fonctionnalités fournies par l'API ContentSearch de Sitecore dans nos scripts Powershell.

Find-Item

La cmdlet Find-Item est utilisée pour récupérer des éléments à l'aide de l'API ContentSearch, où nous fournissons le nom de l'index et les conditions de filtrage avant d'obtenir les résultats. Les résultats renvoyés sont de type SearchResultItem; cependant, nous pouvons tirer parti de l'utilisation d'une autre applet de commande qui nous permet d'inclure nos champs personnalisés dans l'ensemble de résultats.

Voici quelques paramètres que nous pouvons utiliser avec Find-Item:

  1. -Index: Où nous spécifiez le nom de l'index à utiliser.
  2. -Critères: Où nous spécifions le filtre de recherche
  3. -Premier: Où nous pouvons spécifier le nombre de résultats à renvoyer
  4. -Skip: Où nous pouvons spécifier le nombre de résultats à ignorer avant de renvoyer le résultat
  5. -Où: Où nous pouvons spécifier Dynamic Linq pour filtrer les résultats
  6. -WhereValue: Où nous pouvons spécifier Tableau de valeurs qui seront utilisées par l'instruction -Where Linq

Exécutons un exemple de script pour voir comment fonctionne Find-Item:

 $ FilterCriteria = @ (

@ {Filter = "Equals"; Field = "_templatename"; Value = "Event Details"},

@ {Filter = "StartsWith"; Field = "_fullpath"; Value = "/ sitecore / content / Events"}

)




Find-Item -Index "sitecore_master_index" -Criteria $ FilterCriteria 

Voir que nous avons spécifié "sitecore_master_index" pour le paramètre – Index . Nous avons créé une expression de regroupement et l'avons affectée à la variable $ FilterCriteria.

Ensuite, nous avons créé différents filtres d'objets à l'intérieur de notre expression Criteria. Chaque filtre a trois parties imp: champ, filtre et valeur.

  • Filtre : où nous spécifions l'opérateur pour évaluer la condition. Ex- Equals, StartsWith, Contains, EndsWith, LessThan, GreaterThan etc.
  • Champ : où nous pouvons spécifier le nom du champ indexé que nous voulons utiliser en condition de filtrage.
  • Valeur : Valeur du champ pour satisfaire la condition.

Sortie du script ci-dessus:

 Finditeam

Ci-dessus, le script obtiendra le résultat qui a la valeur de propriété TemplateName comme Détails de l'événement et leur le chemin commence par «/ sitecore / content / events» comme indiqué dans l'image.

Récupération de champs personnalisés

Maintenant, comme je l'ai mentionné, l'ensemble de résultats contiendra un élément de type SearchResultItem . Nous n'obtiendrons pas nos champs personnalisés si nous essayons d'y accéder.

Voir l'image ci-dessous où j'ai écrit un script pour afficher le champ personnalisé DifficultyLevel . Il ne montre rien.

 Fetchingcustomfield1

 Sitecore - Comprendre les approches de développement: une perspective Sitecore

Ici, nous pouvons utiliser Initialize-Item après Pipe dans notre instruction pour obtenir des champs personnalisés dans nos résultats.

L'utilisation du script suivant affiche notre champ personnalisé dans la sortie des résultats:

 $ FilterCriteria = @ (

@ {Filter = "Equals"; Field = "_templatename"; Value = "Event Details"},

@ {Filter = "StartsWith"; Field = "_fullpath"; Value = "/ sitecore / content / Events"}

)




Find-Item -Index "sitecore_master_index" $ FilterCriteria | Initialize-Item | Select-Object -Property DifficultyLevel 

Sortie de ci-dessus:

 Fetchingcustomfield2

Ici, nous pouvons maintenant voir les valeurs de nos champs personnalisés . Initialize-Item transforme SearchResultItem tapez les éléments du jeu de résultats en éléments Sitecore avec tous les champs inclus.

Utilisation de -First

Nous pouvons utiliser l'opérateur -First pour extraire un nombre donné d'éléments de résultat de l'ensemble de résultats. Voici la déclaration:

 $ FilterCriteria = @ (

@ {Filter = "Equals"; Field = "_templatename"; Value = "Event Details"},

@ {Filter = "StartsWith"; Field = "_fullpath"; Value = "/ sitecore / content / Events"}

)




Find-Item -Index "sitecore_master_index" -Criteria $ FilterCriteria -First 2 

Ceci ne récupérera que 2 éléments de l'ensemble de résultats:

 Firstentry

[19659004] Utilisation de l'opérateur -Skip

Cela ignorera le nombre d'éléments en fonction de la valeur que nous transmettons.

 $ FilterCriteria = @ (

@ {Filter = "Equals"; Field = "_templatename"; Value = "Event Details"},

@ {Filter = "StartsWith"; Field = "_fullpath"; Value = "/ sitecore / content / Events"}

)




Find-Item -Index "sitecore_master_index" -Criteria $ FilterCriteria -Skip 2 

Sortie:

 Sauterie [19659002]

Utilisation des valeurs Where et Where

Nous pouvons utiliser les valeurs Where et Where pour filtrer notre recherche au lieu des critères. Ici, nous pouvons utiliser des objets appropriés par opposition à l'opérateur de critères que nous avons vu précédemment. – est utilisé pour spécifier la requête Dynamic Linq et – WhereValues ​​ contient un tableau de valeurs.

Ensuite, le script récupère les éléments basés sur des modèles qui ont "Événement" dans leur nom et qui se trouvent sous le nœud "/ sitecore / content / events".

 $ WhereCondition = 'TemplateName.Contains (@ 0) And Path.Contains (@ 2)'

$ WhereValues ​​= @ ("Événement", "en", "/ sitecore / content / Events")

Find-Item -Index "sitecore_master_index" -Where $ WhereCondition -WhereValues ​​$ WhereValues ​​

Sortie du script ci-dessus:

 Wherefinditem

Dans cet article de blog, nous avons vu comment interroger les index Sitecore à l'aide de l'API ContentSearch dans Sitecore Powershell. C'est une approche rapide et nous pouvons facilement utiliser des filtres pour notre résultat.

Jusqu'à présent, nous avons vu comment travailler avec les éléments Sitecore. Dans le prochain article, nous découvrirons comment travailler avec les rendus Sitecore à l'aide de différentes commandes Sitecore Powershell.

À propos de l'auteur

Ramakant Chandel travaille en tant que professionnel Sitecore. Il aime explorer de nouveaux concepts techniques stimulants dans Sitecore. Il est passionné par le partage de ses connaissances avec tout le monde.

Plus de contenu de cet auteur






Source link