Tous les produits
Search
Centre de documentation

Tablestore:Use virtual columns

Dernière mise à jour :Aug 08, 2026

Le SDK Tablestore pour Java permet de mapper les champs source vers différents types de champs d'index à l'aide de colonnes virtuelles, sans modifier le schéma de la table ni réécrire les données.

Prérequis

Avant de commencer, assurez-vous que vous disposez des éléments suivants :

  • Le SDK Tablestore pour Java installé et un client initialisé (Tablestore SDK for Java)

  • Une table dont le nombre maximal de versions est défini sur 1

  • Un TTL de table défini sur -1, ou des mises à jour de table avec UpdateRow désactivé

Remarques d'utilisation

Lorsque vous créez une colonne virtuelle, le champ source et la colonne virtuelle doivent respecter les règles de conversion de type suivantes.

Type de champ source

Type de colonne virtuelle

String

Keyword (y compris les tableaux), FuzzyKeyword (y compris les tableaux), Text (y compris les tableaux), Long (y compris les tableaux), Double (y compris les tableaux), Date (y compris les tableaux), IP (y compris les tableaux), Geo-point (y compris les tableaux)

Long

Keyword, FuzzyKeyword, Text, Date

Double

Keyword, FuzzyKeyword, Text

Les colonnes virtuelles peuvent être utilisées uniquement dans les requêtes et ne peuvent pas être renvoyées par ColumnsToGet. Pour récupérer une valeur, renvoyez le champ source mappé à la colonne virtuelle.

Description

Une colonne virtuelle mappe un champ de table source vers un type de champ d'index de recherche différent. Configurez les colonnes virtuelles lors de la création d'un index de recherche, ou ajoutez-les à un index existant en modifiant dynamiquement son schéma. Interrogez les données avec le nom de la colonne virtuelle après la création du mappage.

Les exemples suivants illustrent le flux de travail complet : créer un index de recherche avec des colonnes virtuelles, puis interroger les données à l'aide de l'une des colonnes virtuelles.

Créer des colonnes virtuelles

L'exemple suivant mappe le champ source Keyword category vers une colonne virtuelle Long et le champ source Long price vers une colonne virtuelle Keyword.

String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
        new FieldSchema("category", FieldType.KEYWORD),
        new FieldSchema("category_as_long", FieldType.LONG)
                .setVirtualField(true)
                .setSourceFieldName("category"),
        new FieldSchema("price", FieldType.LONG),
        new FieldSchema("price_as_keyword", FieldType.KEYWORD)
                .setVirtualField(true)
                .setSourceFieldName("price")));

CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);

Une fois la demande traitée avec succès, attendez que l'index de recherche termine la synchronisation des données avant de l'interroger.

Interroger des données avec une colonne virtuelle

L'exemple suivant interroge les lignes dont la colonne virtuelle price_as_keyword est égale à la chaîne 1000 et renvoie les colonnes de la table source.

String tableName = "example_table";
String indexName = "example_index";
TermsQuery query = new TermsQuery();
query.setFieldName("price_as_keyword");
query.addTerm(ColumnValue.fromString("1000"));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(query);
searchQuery.setGetTotalCount(true);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

Paramètres

FieldSchema contient les paramètres suivants pour définir une colonne virtuelle. Pour les autres paramètres de champ d'index de recherche, consultez Créer un index de recherche.

Nom

Type

Description

fieldName (obligatoire)

String

Le nom de la colonne virtuelle. Le nom doit être unique dans l'index.

fieldType (obligatoire)

FieldType

Le type de champ d'index de recherche pour la colonne virtuelle. Le type doit respecter les règles de conversion prises en charge.

isVirtualField (obligatoire)

Boolean

Définissez ce paramètre sur true pour identifier le champ comme une colonne virtuelle.

sourceFieldNames (obligatoire)

List<String>

Les noms des champs source mappés à la colonne virtuelle. Un seul champ source est actuellement pris en charge. Configurez-le avec setSourceFieldName.