Todos os produtos
Search
Central de documentação

Tablestore:Use virtual columns

Última atualização: Jul 24, 2026

O Tablestore SDK for Java permite mapear campos source para diferentes tipos de campo de índice com colunas virtuais, sem alterar o esquema da tabela ou reescrever dados.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Tablestore SDK for Java instalado e um cliente inicializado

  • Uma tabela com número máximo de versões definido como 1

  • TTL da tabela igual a -1 ou atualizações de tabela com UpdateRow desabilitado

Observações de uso

Ao criar uma coluna virtual, o campo source e a coluna virtual devem obedecer às seguintes regras de conversão de tipo.

Tipo do campo source

Tipo da coluna virtual

String

Keyword (incluindo arrays), FuzzyKeyword (incluindo arrays), Text (incluindo arrays), Long (incluindo arrays), Double (incluindo arrays), Date (incluindo arrays), IP (incluindo arrays), Geo-point (incluindo arrays)

Long

Keyword, FuzzyKeyword, Text, Date

Double

Keyword, FuzzyKeyword, Text

Colunas virtuais servem apenas para consultas e não podem ser retornadas por ColumnsToGet. Para obter um valor, retorne o campo source mapeado à coluna virtual.

Descrição

Uma coluna virtual mapeia um campo da tabela source para um tipo diferente de campo de índice de pesquisa. Configure colunas virtuais ao criar um índice de pesquisa ou adicione-as a um índice existente modificando dinamicamente seu esquema. Após criar o mapeamento, consulte dados usando o nome da coluna virtual.

Os exemplos a seguir demonstram o fluxo completo: criação de um índice de pesquisa com colunas virtuais e consulta de dados usando uma dessas colunas.

Criação de colunas virtuais

Este exemplo mapeia o campo source Keyword category para uma coluna virtual Long e o campo source Long price para uma coluna 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);

Após o êxito da solicitação, aguarde a sincronização completa dos dados no índice de pesquisa antes de consultá-lo.

Consulta de dados com uma coluna virtual

O exemplo abaixo consulta linhas cuja coluna virtual price_as_keyword seja igual à string 1000 e retorna as colunas da tabela 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());

Parâmetros

FieldSchema contém os seguintes parâmetros para definir uma coluna virtual. Para outros parâmetros de campo de índice de pesquisa, consulte Crie um índice de pesquisa.

Nome

Tipo

Descrição

fieldName (obrigatório)

String

Nome da coluna virtual. O nome deve ser único no índice.

fieldType (obrigatório)

FieldType

Tipo de campo do índice de pesquisa para a coluna virtual. O tipo deve obedecer às regras de conversão compatíveis.

isVirtualField (obrigatório)

Boolean

Defina este parâmetro como true para identificar o campo como coluna virtual.

sourceFieldNames (obrigatório)

List<String>

Nomes dos campos source mapeados para a coluna virtual. Atualmente, há suporte para apenas um campo source. Configure-o com setSourceFieldName.