Un schéma d'application définit la structure de vos données pour l'indexation et la recherche. Lorsque vous chargez des données dans OpenSearch, elles sont d'abord stockées dans des tables de données hors ligne. Chaque table contient un ou plusieurs champs. Après traitement, les tables sont jointes pour former une table d'index, qui définit les attributs de recherche utilisés par le moteur de recherche pour construire les index et renvoyer les résultats.
Si vous utilisez plusieurs tables de données, spécifiez les champs de jointure avant le début du traitement des données.
Fonctionnement
Data source → Offline data tables → [Join on specified fields] → Index table → Search engine
Chaque champ d'une table de données correspond à un type de champ OpenSearch. Le type de champ détermine la manière dont les données sont indexées, comment elles peuvent être interrogées et quelles méthodes d'analyse s'appliquent.
Types de champs
OpenSearch High-performance Search Edition prend en charge les types de champs suivants, regroupés par objectif.
Recherche en texte intégral
Utilisez ces types pour les champs nécessitant une tokenisation et plusieurs méthodes d'analyse.
| Type de champ | Description |
|---|---|
SHORT_TEXT |
Texte court. Les valeurs ne doivent pas dépasser 100 octets. Prend en charge plusieurs méthodes d'analyse. |
TEXT |
Texte long. Prend en charge plusieurs méthodes d'analyse. |
Correspondance exacte
Utilisez ces types pour les champs interrogés par valeur exacte — filtrage, tri ou jointure sur une chaîne précise.
| Type de champ | Description |
|---|---|
LITERAL |
Constante de chaîne. Prend en charge uniquement la correspondance exacte. |
LITERAL_ARRAY |
Tableau de constantes de chaînes. Chaque élément prend en charge uniquement la correspondance exacte. |
Numérique
| Type de champ | Description |
|---|---|
INT |
Entier 64 bits. |
INT_ARRAY |
Tableau d'entiers 64 bits. |
FLOAT |
Nombre à virgule flottante. |
FLOAT_ARRAY |
Tableau de nombres à virgule flottante. |
DOUBLE |
Nombre à virgule flottante. |
DOUBLE_ARRAY |
Tableau de nombres à virgule flottante. |
Si les champs de votre source de données sont de type FLOAT ou DOUBLE, convertissez-les en DECIMAL pour éviter les problèmes de précision des données.
Temporel
| Type de champ | Description |
|---|---|
TIMESTAMP |
Entier non signé 64 bits représentant un horodatage. Correspond à DATETIME ou TIMESTAMP dans une source de données. Les valeurs sont automatiquement converties en millisecondes. Utilisez la fonction range pour filtrer les résultats par plage de temps. |
Les champs de type INT peuvent également être mappés à un champ DATETIME ou TIMESTAMP dans une source de données. Les valeurs sont automatiquement converties en millisecondes. Utilisez la fonction range pour filtrer les résultats par plage de temps.
Géographique
| Type de champ | Description |
|---|---|
GEO_POINT |
Constante de chaîne représentant une coordonnée géographique au format "Latitude value Longitude value". |
Remarques d'utilisation
Types de tableaux
Les types de champs tableau (INT_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, LITERAL_ARRAY) suivent le même modèle général :
Dans une source de données, mappez le champ à une colonne VARCHAR ou STRING. Utilisez le plug-in de traitement des données
MultiValueSpliterpour le convertir.Lors du chargement via l'API OpenSearch ou les SDK, envoyez le champ sous forme de tableau, et non de chaîne.
// Correct: array
String[] literal_array = {"Alibaba Cloud", "OpenSearch"};
Pour les champs DOUBLE_ARRAY dans les sources de données ApsaraDB RDS et PolarDB, seul VARCHAR est pris en charge (pas STRING). Pour MaxCompute, VARCHAR et STRING sont tous deux pris en charge.
Noms de champs réservés
N'utilisez pas ces noms pour vos propres champs. L'utilisation d'un nom réservé entraîne des échecs de chargement des données ou un comportement inattendu.
Noms réservés : service_id, ops_app_name, inter_timestamp, index_name, pk, ops_version, ha_reserved_timestamp, summary
Limites des valeurs de champ
Chaque type de champ impose des limites de plage de valeurs. Si une valeur se situe en dehors de la plage autorisée, une erreur de dépassement se produit ou la valeur est tronquée. Pour la liste complète, consultez la section « Limits on fields » de Limites.
Mappages des types de champs de la source de données
Utilisez ces tableaux pour mapper les champs de votre source de données aux types de champs OpenSearch.
Types de champs pris en charge par source de données
| Source de données | Types de champs pris en charge |
|---|---|
| ApsaraDB RDS | TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL, TIME, DATE, TIMESTAMP, VARCHAR |
| PolarDB | TINYINT, SMALLINT, INTEGER, BIGINT, FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL, TIME, DATE, TIMESTAMP, VARCHAR |
| MaxCompute | BIGINT, DOUBLE, BOOLEAN, DATETIME, STRING, DECIMAL, MAP, ARRAY, TINYINT, SMALLINT, INT, FLOAT, CHAR, VARCHAR, DATE, TIMESTAMP, BINARY, INTERVAL_DAY_TIME, INTERVAL_YEAR_MONTH, STRUCT |
Référence de mappage des types de champs
| Type OpenSearch | ApsaraDB RDS | PolarDB | MaxCompute |
|---|---|---|---|
INT |
BIGINT, TINYINT, SMALLINT, INTEGER | BIGINT, TINYINT, SMALLINT, INTEGER | BIGINT, TINYINT, SMALLINT, INT |
INT_ARRAY |
VARCHAR, STRING (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) |
FLOAT |
FLOAT, NUMERIC, DECIMAL | FLOAT, NUMERIC, DECIMAL | FLOAT, DECIMAL |
FLOAT_ARRAY |
VARCHAR, STRING (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) |
DOUBLE |
DOUBLE, NUMERIC, DECIMAL | DOUBLE, NUMERIC, DECIMAL | DOUBLE, DECIMAL |
DOUBLE_ARRAY |
VARCHAR (via MultiValueSpliter) | VARCHAR (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) |
LITERAL |
VARCHAR | VARCHAR | VARCHAR, STRING |
LITERAL_ARRAY |
VARCHAR (via MultiValueSpliter) | VARCHAR (via MultiValueSpliter) | VARCHAR, STRING (via MultiValueSpliter) |
SHORT_TEXT |
VARCHAR | VARCHAR | VARCHAR, STRING |
TEXT |
VARCHAR | VARCHAR | VARCHAR, STRING |
TIMESTAMP |
DATETIME, TIMESTAMP | DATETIME, TIMESTAMP | DATETIME, TIMESTAMP |
GEO_POINT |
VARCHAR | VARCHAR | VARCHAR, STRING au format "lon lat", où lon est la longitude (plage : [-180, 180]) et lat est la latitude (plage : [-90, 90]), toutes deux de type DOUBLE, séparées par un espace |
Créer un schéma d'application
OpenSearch propose quatre méthodes pour créer un schéma d'application. Choisissez en fonction de l'emplacement de vos données et du niveau de contrôle manuel souhaité.
| Méthode | Quand l'utiliser |
|---|---|
| Configurer une source de données | Vos données se trouvent dans ApsaraDB RDS for MySQL, MaxCompute ou PolarDB for MySQL, et vous souhaitez qu'OpenSearch déduise automatiquement le schéma. Consultez Configurer une source de données ApsaraDB RDS for MySQL, Configurer une source de données MaxCompute, et Configurer une source de données PolarDB for MySQL. |
| Créer manuellement | Vous souhaitez un contrôle total sur les types de champs, les méthodes d'analyse et les attributs d'index. |
| Utiliser un modèle | Vous migrez une application existante et souhaitez réutiliser son schéma. Consultez Migrer un schéma d'application entre applications. |
| Charger un fichier | Vous disposez d'un fichier de schéma prédéfini à importer. Consultez Créer un schéma d'application en chargeant un fichier. |