Tablestore SDK for Java kullanarak bir tablo için arama dizini oluşturun; dizin alanlarını, ön sıralamayı, yaşam süresini (TTL), sanal sütunları ve vurgulamayı yapılandırın.
Ön koşullar
Başlamadan önce aşağıdaki koşulları sağladığınızdan emin olun:
Tablestore SDK for Java yüklü ve istemci başlatılmış olmalıdır.
Tablo mevcut olmalı ve maksimum veri sürümü sayısı 1 olarak ayarlanmış olmalıdır.
Tablonun TTL değeri -1 olmalı veya
UpdateRowgüncellemeleri devre dışı bırakılmış olmalıdır.
Açıklama
Bir tablo için arama dizini oluşturmak üzere createSearchIndex yöntemini çağırın. Aynı tablo için birden fazla arama dizini oluşturabilirsiniz. İstekte tablo adını, dizin adını ve tam dizin şemasını belirtin; sorgulamak istediğiniz sütunları fieldSchemas parametresine ekleyin. Her bir dizin alanının veri türü, tablodaki karşılık gelen sütun türüyle eşleşmelidir.
public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request)
Arama dizini oluşturma işlemi eşzamansızdır. İstek başarılı olduktan sonra dizin bilgilerini sorgulayın ve verileri sorgulamadan önce dizin durumunun RUNNING değerine dönmesini bekleyin.
Aşağıdaki örnekte, Keyword ve Long alanlara sahip example_index dizini example_table tablosu için oluşturulur. Ön sıralama veya TTL ayarı belirtilmediğinden dizin birincil anahtara göre sıralanır ve verilerin süresi dolmaz.
String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("category", FieldType.KEYWORD),
new FieldSchema("price", FieldType.LONG)));
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
Parametreler
CreateSearchIndexRequest nesnesi aşağıdaki parametreleri içerir:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Saniye cinsinden dizin verisi TTL değeri. Varsayılan değer: -1. Bu parametreyi -1 veya en az 86.400 olan bir tamsayıya ayarlayın. -1 değeri, verilerin süresinin dolmadığı anlamına gelir. Tablestore, saklama süresi bu değeri aştığında verileri otomatik olarak siler. -1 dışında bir değer ayarlamak için tabloda |
Dizin şeması
indexSchema parametresi IndexSchema türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dizin alanları
indexSchema.fieldSchemas[] dizisindeki her öğe FieldSchema türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vektör seçenekleri
indexSchema.fieldSchemas[].vectorOptions parametresi VectorOptions türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Uzaklık ölçütü. Geçerli değerler:
|
Dizin ayarları
indexSchema.indexSetting parametresi IndexSetting türündedir ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Dizin ön sıralaması
indexSchema.indexSort parametresi Sort türündedir ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Birincil anahtar sıralaması
indexSchema.indexSort.sorters[] yolundaki türü PrimaryKeySort olan bir öğe, birincil anahtara göre ön sıralama yapar ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Alan sıralaması
indexSchema.indexSort.sorters[] yolundaki türü FieldSort olan bir öğe, alan değerine göre ön sıralama yapar ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnekler
Dizin ön sıralamasını yapılandırma
Aşağıdaki örnekte dizin verileri created_at alanına göre artan sırada ön sıralanır.
String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("category", FieldType.KEYWORD),
new FieldSchema("price", FieldType.LONG),
new FieldSchema("description", FieldType.TEXT),
new FieldSchema("created_at", FieldType.LONG)
.setEnableSortAndAgg(true)));
indexSchema.setIndexSort(new Sort(
Collections.<Sort.Sorter>singletonList(
new FieldSort("created_at", SortOrder.ASC))));
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
Dizin TTL değerini yapılandırma
Aşağıdaki örnekte yedi günlük bir TTL değeri yapılandırılır. Tablestore SDK for Java 5.12.0 veya sonraki bir sürümü kullanın.
String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("category", FieldType.KEYWORD),
new FieldSchema("price", FieldType.LONG)));
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
request.setTimeToLiveInDays(7);
client.createSearchIndex(request);
Sanal sütunlar oluşturma
Aşağıdaki örnekte Keyword alanı category bir Long sanal sütuna, Long alanı price ise bir Keyword 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);
Özet ve vurgulamayı etkinleştirme
Aşağıdaki örnekte Text alanı description için özet ve vurgulama özelliği etkinleştirilir.
String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("category", FieldType.KEYWORD),
new FieldSchema("price", FieldType.LONG),
new FieldSchema("description", FieldType.TEXT)
.setEnableHighlighting(true)));
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);