Todos los productos
Search
Centro de documentos

Tablestore:Uso de columnas virtuales

Última actualización: Sep 03, 2026

Tablestore SDK for Java permite asignar campos de origen a distintos tipos de campo de índice mediante columnas virtuales, sin modificar el esquema de la tabla ni reescribir los datos.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Tablestore SDK for Java instalado y un cliente inicializado

  • Una tabla cuyo número máximo de versiones esté establecido en 1

  • Un TTL de tabla de -1 o actualizaciones de tabla con UpdateRow deshabilitado

Notas de uso

Al crear una columna virtual, el campo de origen y la columna virtual deben cumplir las siguientes reglas de conversión de tipos.

Tipo de campo de origen

Tipo de columna virtual

String

Keyword (incluidos arreglos), FuzzyKeyword (incluidos arreglos), Text (incluidos arreglos), Long (incluidos arreglos), Double (incluidos arreglos), Date (incluidos arreglos), IP (incluidos arreglos), Geo-point (incluidos arreglos)

Long

Keyword, FuzzyKeyword, Text, Date

Double

Keyword, FuzzyKeyword, Text

Las columnas virtuales solo pueden utilizarse en consultas y no se devuelven mediante ColumnsToGet. Para recuperar un valor, devuelva el campo de origen asignado a la columna virtual.

Descripción

Una columna virtual asigna un campo de la tabla de origen a un tipo de campo de índice de búsqueda diferente. Configure las columnas virtuales al crear un índice de búsqueda o agréguelas a un índice existente mediante la modificación dinámica de su esquema. Una vez creada la asignación, consulte los datos con el nombre de la columna virtual.

A continuación, los ejemplos muestran el flujo de trabajo completo: creación de un índice de búsqueda con columnas virtuales y consulta posterior de datos mediante una de dichas columnas.

Creación de columnas virtuales

En el siguiente ejemplo se asigna el campo de origen Keyword category a una columna virtual Long, y el campo de origen Long price a una columna virtual 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);

Cuando la solicitud se complete correctamente, espere a que el índice de búsqueda termine de sincronizar los datos antes de consultarlo.

Consulta de datos con una columna virtual

El siguiente ejemplo consulta las filas cuya columna virtual price_as_keyword es igual a la cadena 1000 y devuelve las columnas de la tabla de origen.

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());

Parámetros

FieldSchema contiene los siguientes parámetros para definir una columna virtual. Para otros parámetros de campos del índice de búsqueda, consulte Create a search index.

Nombre

Tipo

Descripción

fieldName (obligatorio)

String

Nombre de la columna virtual. Debe ser único dentro del índice.

fieldType (obligatorio)

FieldType

Tipo de campo del índice de búsqueda para la columna virtual. El tipo debe cumplir las reglas de conversión compatibles.

isVirtualField (obligatorio)

Boolean

Establezca este parámetro en true para identificar el campo como una columna virtual.

sourceFieldNames (obligatorio)

List<String>

Nombres de los campos de origen asignados a la columna virtual. Actualmente solo se admite un campo de origen. Configúrelo mediante setSourceFieldName.