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
UpdateRowdé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) |
|
Le nom de la colonne virtuelle. Le nom doit être unique dans l'index. |
|
fieldType (obligatoire) |
|
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) |
|
Définissez ce paramètre sur |
|
sourceFieldNames (obligatoire) |
|
Les noms des champs source mappés à la colonne virtuelle. Un seul champ source est actuellement pris en charge. Configurez-le avec |