Lors de la synchronisation des données d'une source vers OpenSearch, il peut s'avérer nécessaire de transformer les valeurs des champs avant l'indexation, par exemple pour scinder une chaîne délimitée par des virgules en un tableau ou supprimer les balises HTML. Les plug-ins de traitement des données appliquent ces transformations automatiquement durant la synchronisation, ce qui dispense de tout prétraitement externe à OpenSearch.
Les plug-ins de traitement des données ne sont disponibles que lors de la synchronisation via une source de données configurée. Si vous importez des données via l'API ou les SDK OpenSearch, traitez-les avant l'importation.
Prérequis
Avant de commencer, vérifiez les points suivants :
Une source de données est configurée pour votre application OpenSearch.
Des mappages de champs sont définis entre vos tables sources et vos tables OpenSearch.
Configurez les plug-ins lors de la configuration de la source de données, et non lors de la définition du schéma de l'application. Les plug-ins ne deviennent disponibles qu'après la configuration d'une source de données.
Contraintes relatives aux sources de données
Tenez compte des contraintes suivantes avant de configurer les plug-ins :
ApsaraDB RDS et PolarDB : Une table OpenSearch peut être associée à plusieurs tables sources (prend en charge le partitionnement de base de données et de table).
MaxCompute : Une table OpenSearch ne peut être associée qu'à une seule table source. Pour synchroniser des données depuis plusieurs tables sources MaxCompute, fusionnez-les d'abord en une seule table.
Plug-ins disponibles
OpenSearch propose cinq plug-ins pour transformer les champs lors de la synchronisation :
| Plug-in | Type de transformation | Fonctionnalité |
|---|---|---|
| JsonKeyValueExtractor | Extraction JSON | Extrait la valeur d'une clé spécifiée depuis un champ source au format JSON |
| MultiValueSpliter | Division de valeurs | Divise un champ source en plusieurs valeurs à l'aide d'un délimiteur |
| KeyValueExtractor | Extraction clé-valeur | Extrait les clés et les valeurs depuis des champs source au format paire clé-valeur |
| StringCatenateExtractor | Concaténation de chaînes | Concatène les valeurs de plusieurs champs en une seule chaîne |
| HTMLTagRemover | Suppression de balises HTML | Supprime les balises HTML de la valeur d'un champ source |
JsonKeyValueExtractor
Ce plug-in extrait la valeur d'une clé spécifiée depuis un champ source au format JSON et la mappe au champ de destination. Il n'extrait que la valeur de la clé indiquée.
Exigence de type : Le type de la valeur extraite doit correspondre au type du champ de destination. En cas d'incompatibilité, la valeur extraite est ignorée sans erreur.
Conversion en tableau : Si la valeur extraite est un tableau JSON, elle est automatiquement convertie en valeur de champ de type Array.
Exemple
Valeur du champ source :
{"title": "the content", "body": "the content"}
Pour extraire la clé title, configurez le plug-in pour cibler title. Le champ de destination reçoit alors "the content".
Pour les types Array :
Source LITERAL_ARRAY :
{"tags": ["a", "b", "c"]}Source INT_ARRAY :
{"tags": [1, 2, 3]}
MultiValueSpliter
Ce plug-in divise la valeur d'un champ source en plusieurs valeurs à l'aide d'un délimiteur spécifié, puis écrit les résultats dans un champ de destination de type Array.
Exigence de type : Le champ de destination doit être de type Array.
Prise en charge des délimiteurs :
| Type de délimiteur | Méthode de spécification |
|---|---|
Caractères non imprimables courants (par ex., \t) |
Saisir directement |
| Caractères non imprimables rares | Utiliser la notation Unicode (par ex., \u001D) |
Délimiteurs multicharactères (par ex., ##, \t\t) |
Saisir directement |
Exemple
Valeur du champ source : 1,2,3
Spécifiez , comme délimiteur.
Pour plus de détails sur la configuration, consultez Configuration de MultiValueSpliter.
KeyValueExtractor
Ce plug-in extrait les clés et valeurs spécifiées depuis un champ source au format paires clé-valeur, et mappe les résultats au champ de destination. Il n'extrait que les valeurs de la clé indiquée. Aucun délimiteur n'est requis.
Exigence de type : Le type de la valeur extraite doit correspondre au type du champ de destination. En cas d'incompatibilité, la valeur est ignorée sans erreur. Si un délimiteur sépare les valeurs extraites, le champ de destination doit être de type Array.
Comportement en cas de doublon de clé : Si deux clés identiques existent, seule la valeur de la seconde clé est extraite.
Exemple
Valeur du champ source : key1:value1,value2;key2:value3
Configuration :
Les paires clé-valeur sont séparées par des points-virgules (
;) : séparekey1:value1,value2dekey2:value3Les clés et les valeurs sont séparées par des deux-points (
:) : sépare la clé de la valeurLes valeurs sont séparées par des virgules (
,) : sépare plusieurs valeurs pour une même clé
StringCatenateExtractor
Ce plug-in concatène les valeurs de plusieurs champs de la table de destination en une seule chaîne, selon un ordre spécifié.
Exigence de type : Ce plug-in ne peut pas concaténer des champs de type INT. Nous vous recommandons d'utiliser des champs de type LITERAL.
Source des champs : Les champs doivent provenir de la table de destination, et non de la table source. Séparez les noms de plusieurs champs par des virgules (,).
Variable système : Utilisez $table pour inclure le nom de la table actuelle dans la chaîne concaténée. $table n'est renseigné que lorsqu'un caractère générique de partitionnement de table est configuré.
Exemple
Concaténez field1 et field2 avec un séparateur de soulignement (_).
HTMLTagRemover
Ce plug-in supprime toutes les balises HTML de la valeur d'un champ source. Le champ de destination reçoit le contenu en texte brut.
Exemple
Valeur du champ source : <div id="copyright">OpenSearch</div>
Après traitement, la valeur du champ de destination est : OpenSearch
Limitations
| Contrainte | Détail |
|---|---|
| Importations via API et SDK | Les plug-ins ne sont pas disponibles. Traitez les données avant l'importation. |
| Source de données MaxCompute | Une table OpenSearch correspond à une seule table source MaxCompute |
| StringCatenateExtractor | Ne peut pas concaténer des champs de type INT |
| JsonKeyValueExtractor et KeyValueExtractor | Une incompatibilité de type entre la valeur extraite et le champ de destination entraîne une perte de données silencieuse |
| Moment de la configuration du plug-in | Configurez uniquement après avoir configuré une source de données ; non disponible lors de la définition du schéma |