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
UpdateRowiş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.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|