Tüm Ürünler
Search
Belge Merkezi

Tablestore:Create a search index

Son Güncelleme:Oct 02, 2026

Tablestore SDK for Python kullanarak bir arama dizini oluşturun; dizin alanlarını, ön sıralamayı, yaşam süresini (TTL), sanal sütunları ve vurgulamayı yapılandırın.

Önkoşullar

  • Tablestore SDK for Python öğesini yükleyin ve bir istemci başlatın.

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

  • Tablo TTL değeri -1 olarak ayarlanmış olmalı veya tablo için UpdateRow ile güncellemeler devre dışı bırakılmış olmalıdır.

Açıklama

Bir tablo için arama dizini oluşturmak üzere create_search_index yöntemini çağırın. Bir tabloda birden fazla arama dizini bulunabilir. İstekte tabloyu, dizin adını ve eksiksiz dizin yapılandırmasını belirtin; sorgulanacak sütunları fields parametresine ekleyin. Dizin alanı türleri, ilgili tablo sütunlarının veri türleriyle eşleşmelidir. Desteklenen türler için bkz. Veri türleri.

create_search_index(table_name, index_name, index_meta)
Not

Arama dizini oluşturma işlemi zaman uyumsuzdur. İstek başarılı olduktan sonra dizini sorgulamadan önce dizin verisi senkronizasyonunun tamamlanmasını bekleyin.

Aşağıdaki örnek, example_table üzerinde Keyword ve Long alanlara sahip example_index adlı bir dizin oluşturur. Ön sıralama ve TTL yapılandırılmazsa dizin birincil anahtara göre sıralanır ve dizin verileri son kullanmaz.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Parametreler

create_search_index aşağıdaki parametreleri kabul eder.


Ad


Tür


Açıklama


table_name (gerekli)


str


Tablo adı.


index_name (gerekli)


str


Arama dizini adı.


index_meta (gerekli)


SearchIndexMeta


Arama dizini yapılandırması.

Dizin yapılandırması

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


Ad


Tür


Açıklama


fields (gerekli)


List[FieldSchema]


Dizin alanları.


index_setting (isteğe bağlı)


IndexSetting


Dizin ayarları.


index_sort (isteğe bağlı)


Sort


Ön sıralama yapılandırması. Bu parametre yapılandırılmazsa ve dizin Nested alan içermiyorsa veriler birincil anahtara göre sıralanır. Nested dizinler ön sıralamayı desteklemez.


time_to_live (isteğe bağlı)


int


Dizin verilerinin saniye cinsinden TTL (yaşam süresi) değeri. Varsayılan değer: -1. Değer -1 veya 86400'e eşit ya da büyük bir tamsayı olmalıdır. -1 değeri, dizin verilerinin son kullanmadığını belirtir. Farklı bir değer belirtirseniz tablo için UpdateRow ile güncellemeleri devre dışı bırakın. Dizin TTL değeri, tablo TTL değerini aşamaz. Dizin oluşturulduktan sonra bu değeri update_search_index ile değiştirebilirsiniz. Daha fazla bilgi için bkz. Yaşam döngüsü yönetimi.

Dizin alanları

index_meta.fields[] içindeki her öğe FieldSchema türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


field_name (gerekli)


str


Dizin alanı adı. Alan, bir birincil anahtar sütununa veya öznitelik sütununa karşılık gelebilir.


field_type (gerekli)


FieldType


Dizin alanı türü. Çok katmanlı mantıksal ilişkiler için Nested, JSON biçimli veriler için JSON ve coğrafi koordinatlar için Geo-point kullanın.


index (isteğe bağlı)


bool


Alan için ters veya mekansal dizin oluşturulup oluşturulmayacağını belirtir. Varsayılan değer: False. Alanı sorgulamak için bu parametreyi True olarak ayarlayın.


enable_highlighting (isteğe bağlı)


bool


Özet ve vurgulama özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu özellik yalnızca Text alanları tarafından desteklenir. Varsayılan değer: False. Bu parametre Tablestore SDK for Python 6.0.0 veya sonraki bir sürümü gerektirir. En son sürümü kullanmanız önerilir.


analyzer (isteğe bağlı)


str


Bir Text alanı için ayrıştırıcı. Bu parametre yapılandırılmazsa tek kelimelik belirteçleştirme kullanılır.


analyzer_parameter (isteğe bağlı)


AnalyzerParameter


Ayrıştırıcı parametreleri. analyzer yapılandırılmışsa seçilen ayrıştırıcı için parametreleri belirtin.


enable_sort_and_agg (isteğe bağlı)


bool


Sıralama ve toplama işlemlerinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: False. Text ve Nested alanlar sıralama veya toplamayı desteklemez ancak Nested alanın alt alanları destekler.


is_array (isteğe bağlı)


bool


Alanın bir dizi olup olmadığını belirtir. Varsayılan değer: False. Dizi değerleri JSON dizileri olarak yazılmalıdır. Nested alanlar için bu parametreyi yapılandırmanız gerekmez.


sub_field_schemas (isteğe bağlı)


List[FieldSchema]


Nested veya JSON alanının alt alanları. Nested ve JSON alanları için bu parametre gereklidir.


is_virtual_field (isteğe bağlı)


bool


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


source_fields (isteğe bağlı)


List[str]


Sanal sütunla eşlenen kaynak tablo alanları. Sanal sütun için bu parametre gereklidir. Yalnızca bir kaynak alan desteklenir.


date_formats (isteğe bağlı)


List[str]


Date alanı tarafından desteklenen tarih biçimleri. Date alanları için bu parametre gereklidir.


vector_options (isteğe bağlı)


VectorOptions


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


json_type (isteğe bağlı)


JsonType


JSON dizini türü. Geçerli değerler: JsonType.OBJECT_JSON ve JsonType.NESTED_JSON. JSON alanları için bu parametre gereklidir.


text_similarity (isteğe bağlı)


TextSimilarity


Bir Text alanı için benzerlik algoritması. Geçerli değerler: TextSimilarity.BM25 ve TextSimilarity.SHORT_TEXT.

Vektör yapılandırması

index_meta.fields[].vector_options parametresi VectorOptions türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


data_type (gerekli)


VectorDataType


Vektör veri türü. Yalnızca VectorDataType.VD_FLOAT_32 desteklenir.


dimension (gerekli)


int


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


metric_type (gerekli)


VectorMetricType


Uzaklık ölçütü. Geçerli değerler: VectorMetricType.VM_EUCLIDEAN, VectorMetricType.VM_COSINE ve VectorMetricType.VM_DOT_PRODUCT. Daha fazla bilgi için bkz. Vektör araması.

Dizin ayarları

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


Ad


Tür


Açıklama


routing_fields (isteğe bağlı)


List[str]


Özel yönlendirme alanları. Bir veya daha fazla birincil anahtar sütunu belirtebilirsiniz. Çoğu durumda tek bir sütun belirtin. Birden fazla sütun belirtirseniz değerleri birleştirilir. Aynı yönlendirme alanı değerine sahip kayıtlar aynı veri bölümüne yazılır.

Ön sıralama yapılandırması

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


Ad


Tür


Açıklama


sorters (gerekli)


List[Sorter]


Ön sıralama kuralları. PrimaryKeySort birincil anahtara göre, FieldSort ise alan değerine göre sıralama yapar. FieldSort tarafından kullanılan bir alanda sıralama ve toplama etkinleştirilmiş olmalıdır. Daha fazla bilgi için bkz. Sıralama ve sayfalama.

Birincil anahtar sıralaması

index_meta.index_sort.sorters[] içindeki PrimaryKeySort türündeki bir öğe, verileri birincil anahtara göre sıralar ve aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


sort_order (isteğe bağlı)


SortOrder


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

Alan değeri sıralaması

index_meta.index_sort.sorters[] içindeki FieldSort türündeki bir öğe, verileri alan değerine göre sıralar ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


field_name (gerekli)


str


Alan adı.


sort_order (isteğe bağlı)


SortOrder


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


sort_mode (isteğe bağlı)


SortMode


Bir alan birden fazla değer içerdiğinde sıralama için kullanılan değer.

Örnekler

Ön sıralama yapılandırma

Aşağıdaki örnek, dizin verilerini created_at alanına göre artan düzende ön sıralar.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "created_at",
        FieldType.LONG,
        index=True,
        enable_sort_and_agg=True,
    ),
]
index_sort = Sort([FieldSort("created_at", SortOrder.ASC)])
index_meta = SearchIndexMeta(fields, index_sort=index_sort)

client.create_search_index(table_name, index_name, index_meta)

Dizin TTL yapılandırma

Aşağıdaki örnek, dizin TTL değerini 7 gün olarak ayarlar.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields, time_to_live=7 * 24 * 60 * 60)

client.create_search_index(table_name, index_name, index_meta)

Belirteçleştirme yapılandırma

Aşağıdaki örnek, Text alanı description için bölme belirteçleştirmesini yapılandırır ve virgülü (,) ayırıcı olarak kullanır.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "description",
        FieldType.TEXT,
        index=True,
        analyzer=AnalyzerType.SPLIT,
        analyzer_parameter=SplitAnalyzerParameter(","),
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Vektör alanı oluşturma

Aşağıdaki örnek, embedding adında dört boyutlu bir Vector alanı oluşturur ve vektör benzerliğini ölçmek için nokta çarpımını kullanır.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "embedding",
        FieldType.VECTOR,
        index=True,
        vector_options=VectorOptions(
            data_type=VectorDataType.VD_FLOAT_32,
            dimension=4,
            metric_type=VectorMetricType.VM_DOT_PRODUCT,
        ),
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Sanal sütun oluşturma

Aşağıdaki örnek, Keyword alanı category alanını bir Long sanal sütuna, Long alanı price alanını ise bir Keyword sanal sütuna eşler.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "category_as_long",
        FieldType.LONG,
        index=True,
        is_virtual_field=True,
        source_fields=["category"],
    ),
    FieldSchema("price", FieldType.LONG, index=True),
    FieldSchema(
        "price_as_keyword",
        FieldType.KEYWORD,
        index=True,
        is_virtual_field=True,
        source_fields=["price"],
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Vurgulamayı etkinleştirme

Aşağıdaki örnek, Text alanı description için vurgulamayı etkinleştirir.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
    FieldSchema(
        "description",
        FieldType.TEXT,
        index=True,
        enable_highlighting=True,
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)