Tüm Ürünler
Search
Belge Merkezi

Tablestore:Create a search index

Son Güncelleme:Oct 02, 2026

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 UpdateRow gü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)
Not

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:


Ad


Tür


Açıklama


tableName (gerekli)


String


Tablo adı.


indexName (gerekli)


String


Arama dizini adı.


indexSchema (gerekli)


IndexSchema


Dizin şeması.


sourceIndexName (isteğe bağlı)


String


Dizin yeniden oluşturma için kaynak dizin adı. Bu parametreyi yalnızca arama dizini şemasını dinamik olarak değiştirdiğinizde ayarlayın.


timeToLive (isteğe bağlı)


Integer

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 UpdateRow güncellemelerini devre dışı bırakın. Dizin TTL değeri, tablo TTL değerini aşamaz. Dizin oluşturulduktan sonra değeri değiştirmek için updateSearchIndex yöntemini çağırabilirsiniz. TTL değerini gün cinsinden belirtmek için setTimeToLiveInDays yöntemini çağırın. Daha fazla bilgi için bkz. Arama dizininin TTL değerini yapılandırma.

Dizin şeması

indexSchema parametresi IndexSchema türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


fieldSchemas (gerekli)


List<FieldSchema>


Dizin alanları.


indexSetting (isteğe bağlı)


IndexSetting


Dizin ayarları.


indexSort (isteğe bağlı)


Sort


Dizin ön sıralama ayarları. Bu parametre ayarlanmazsa ve dizin Nested alan içermiyorsa Tablestore birincil anahtara göre sıralama yapar. Nested dizinler ön sıralamayı desteklemez.

Dizin alanları

indexSchema.fieldSchemas[] dizisindeki her öğe FieldSchema türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


fieldName (gerekli)


String


Dizin alanı adı. Alan, bir birincil anahtar sütunu veya bir nitelik sütunuyla eşlenebilir.


fieldType (gerekli)


FieldType


Dizin alanı türü. Çok katmanlı ilişkiler için Nested, JSON biçimli veriler için JSON ve coğrafi veriler için Geo-point kullanın. JSON biçimli verileri dize olarak da depolayabilir ve dizi veya Nested alanlarla sorgulayabilirsiniz.


index (isteğe bağlı)


boolean


Alan için ters veya mekansal dizin oluşturulup oluşturulmayacağını belirtir. Varsayılan değer: true. false olarak ayarlanırsa alan için dizin oluşturulmaz.


enableHighlighting (isteğe bağlı)


boolean


Özet ve vurgulama özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Yalnızca Text alanlar bu özelliği destekler. Varsayılan değer: false.


analyzer (isteğe bağlı)


String


Bir Text alanı için ayrıştırıcı. Bu parametre ayarlanmazsa tek karakterlik belirteçleme kullanılır.


analyzerParameter (isteğe bağlı)


AnalyzerParameter


Ayrıştırıcı ayarları. analyzer parametresini ayarlarsanız ilgili ayrıştırıcının gerektirdiği parametreleri yapılandırmanız gerekir.


enableSortAndAgg (isteğe bağlı)


boolean


Sıralama ve toplama işlemlerinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: true. Text alanlar sıralama veya toplamayı desteklemez. Text içeriğini sıralamak veya toplamak için bir Keyword sanal sütun oluşturun.


isArray (isteğe bağlı)


boolean


Alanın bir dizi olup olmadığını belirtir. Dizi değerlerini JSON dizileri olarak yazın. Nested alanlar için bu parametreyi ayarlamanız gerekmez.


subFieldSchemas (isteğe bağlı)


List<FieldSchema>


Bir Nested alanın alt alanları. Bu parametre Nested alan için gereklidir.


isVirtualField (isteğe bağlı)


boolean


Alanın bir sanal sütun olup olmadığını belirtir. Varsayılan değer: false.


sourceFieldNames (isteğe bağlı)


List<String>


Sanal sütunla eşlenen tablo alanları. Bu parametre sanal sütun için gereklidir.


dateFormats (isteğe bağlı)


List<String>


Bir Date alanı tarafından desteklenen tarih biçimleri. Bu parametre Date alanı için gereklidir.


vectorOptions (isteğe bağlı)


VectorOptions


Vektör veri türü, boyut ve uzaklık ölçütü. Bu parametre Vector alanı için gereklidir.


jsonType (isteğe bağlı)


JsonType


Bir JSON alanının dizin türü. Geçerli değerler: OBJECT ve NESTED. Bu parametre JSON alanı için gereklidir.

Vektör seçenekleri

indexSchema.fieldSchemas[].vectorOptions parametresi VectorOptions türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


dataType (gerekli)


VectorDataType


Vektör veri türü. Yalnızca FLOAT_32 desteklenir.


dimension (gerekli)


Integer


Vektör boyutu. Maksimum değer: 4.096.


metricType (gerekli)


VectorMetricType

Uzaklık ölçütü. Geçerli değerler: EUCLIDEAN, COSINE ve DOT_PRODUCT. Daha yüksek puan, daha büyük benzerliği gösterir.

EUCLIDEAN düz çizgi mesafesini ölçer ve Tablestore'da son karekök hesaplamasını atlar. COSINE vektörler arasındaki açının kosinüsünü ölçer ve genellikle metin benzerliği için kullanılır. DOT_PRODUCT eşit boyutlu vektörlerin karşılık gelen koordinatlarını çarpar ve sonuçları toplar. Daha fazla bilgi için bkz. Uzaklık ölçütü algoritmaları.

Dizin ayarları

indexSchema.indexSetting parametresi IndexSetting türündedir ve aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


routingFields (isteğe bağlı)


List<String>


Özel yönlendirme alanları. Bir veya daha fazla birincil anahtar sütunu seçin. Çoğu durumda bir alan yeterlidir. Birden fazla alan belirtirseniz Tablestore bunların değerlerini birleştirir. Tablestore, dizin verilerini dağıtmak için yönlendirme alanı değerlerini kullanır ve aynı değerlere sahip kayıtları aynı veri bölümüne yazar.

Dizin ön sıralaması

indexSchema.indexSort parametresi Sort türündedir ve aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


sorters (isteğe bağlı)


List<Sort.Sorter>


Ön sıralayıcılar. PrimaryKeySort birincil anahtara göre, FieldSort ise alan değerine göre sıralama yapar. FieldSort içinde kullanılan alanlar, sıralama ve toplama etkinleştirilerek dizine eklenmelidir. Daha fazla bilgi için bkz. Sonuçları sıralama ve sayfalama.

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.


Ad


Tür


Açıklama


order (isteğe bağlı)


SortOrder


Birincil anahtar sıralama düzeni. Geçerli değerler: SortOrder.ASC ve SortOrder.DESC. Varsayılan değer: SortOrder.ASC.

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.


Ad


Tür


Açıklama


fieldName (gerekli)


String


Ön sıralama için kullanılan alan.


order (isteğe bağlı)


SortOrder


Alan sıralama düzeni. Geçerli değerler: SortOrder.ASC ve SortOrder.DESC. Varsayılan değer: SortOrder.ASC.


mode (isteğe bağlı)


SortMode


Çok değerli bir alan için sıralama yöntemi.

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