Tüm Ürünler
Search
Belge Merkezi

Tablestore:Use virtual columns

Son Güncelleme:Oct 02, 2026

Tablestore SDK for Java, tablo şemasını değiştirmeden veya verileri yeniden yazmadan sanal sütunlar aracılığıyla kaynak alanları farklı dizin alanı türlerine eşler.

Ön koşullar

Başlamadan önce aşağıdaki ön koşulları karşıladığınızdan emin olun:

  • Tablestore SDK for Java yüklü ve istemci başlatılmış olmalı.

  • Maksimum sürüm sayısı 1 olarak ayarlanmış bir tablo bulunmalı.

  • Tablonun TTL değeri -1 olmalı veya UpdateRow işlevi devre dışı bırakılmış olmalı.

Kullanım notları

Sanal sütun oluştururken kaynak alan ile sanal sütun arasında aşağıdaki tür dönüştürme kurallarına uyulmalıdır.


Kaynak alan türü


Sanal sütun türü


Dize


Keyword (diziler dahil), FuzzyKeyword (diziler dahil), Text (diziler dahil), Long (diziler dahil), Double (diziler dahil), Date (diziler dahil), IP (diziler dahil), Geo-point (diziler dahil)


Long


Keyword, FuzzyKeyword, Text, Date


Double


Keyword, FuzzyKeyword, Text

Sanal sütunlar yalnızca sorgularda kullanılabilir; ColumnsToGet ile döndürülemezler. Değeri almak için sanal sütuna karşılık gelen kaynak alanı döndürün.

Açıklama

Sanal sütun, kaynak tablo alanını farklı bir arama dizini alanı türüne eşler. Arama dizini oluştururken sanal sütunları yapılandırabilir veya mevcut bir dizinin şemasını dinamik olarak değiştirerek sanal sütun ekleyebilirsiniz. Eşleme tamamlandıktan sonra verileri sanal sütun adıyla sorgulayabilirsiniz.

Aşağıdaki örneklerde tam iş akışı gösterilmiştir: sanal sütunlarla arama dizini oluşturma ve ardından sanal sütunlardan birini kullanarak veri sorgulama.

Sanal sütunları oluşturun

Aşağıdaki örnekte Keyword türündeki category kaynak alanı Long türünde bir sanal sütuna, Long türündeki price kaynak alanı ise Keyword türünde bir sanal sütuna eşlenir.

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

İstek başarılı olduktan sonra sorgu çalıştırmadan önce arama dizininin veri senkronizasyonunu tamamlamasını bekleyin.

Sanal sütunla veri sorgulayın

Aşağıdaki örnekte price_as_keyword sanal sütunu 1000 dizesine eşit olan satırlar sorgulanır ve kaynak tablo sütunları döndürülür.

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

Parametreler

FieldSchema sanal sütun tanımlamak için aşağıdaki parametreleri içerir. Diğer arama dizini alanı parametreleri için bkz. Arama dizini oluşturun.


Ad


Tür


Açıklama


fieldName (gerekli)


String


Sanal sütun adı. Ad, dizinde benzersiz olmalıdır.


fieldType (gerekli)


FieldType


Sanal sütunun arama dizini alanı türü. Tür, desteklenen dönüştürme kurallarına uygun olmalıdır.


isVirtualField (gerekli)


Boolean


Alanı sanal sütun olarak işaretlemek için bu parametreyi true olarak ayarlayın.


sourceFieldNames (gerekli)


List<String>


Sanal sütuna eşlenen kaynak alan adları. Şu anda yalnızca tek bir kaynak alan desteklenmektedir. Bu alanı setSourceFieldName yöntemiyle yapılandırın.