すべてのプロダクト
Search
ドキュメントセンター

Tablestore:検索インデックスの作成

最終更新日:Aug 07, 2026

Tablestore SDK for Python を使用して検索インデックスを作成し、インデックスフィールド、プリソート、生存時間 (TTL)、仮想カラム、ハイライトを設定します。

前提条件

  • Tablestore SDK for Python をインストールし、クライアントを初期化していること。

  • 最大バージョン数が 1 に設定された テーブルがあること。

  • テーブルの TTL が -1 に設定されている、またはテーブルで UpdateRow による更新が無効化されていること。

説明

create_search_index を呼び出して、テーブルの検索インデックスを作成します。テーブルには複数の検索インデックスを作成できます。リクエストでテーブル名、インデックス名、完全なインデックス設定を指定し、クエリ対象の列を fields に追加します。インデックスフィールドの型は、対応するテーブル列のデータ型と一致している必要があります。サポートされている型については、データ型をご参照ください。

create_search_index(table_name, index_name, index_meta)
説明

検索インデックスの作成は非同期処理です。リクエストが成功した後、インデックスデータの同期が完了してからインデックスをクエリしてください。

次の例では、example_table に Keyword および Long フィールドを持つ example_index を作成します。プリソートと TTL を設定しない場合、インデックスはプライマリキーでソートされ、インデックスデータは期限切れになりません。

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)

パラメーター

create_search_index では、次のパラメーターを使用できます。

名前

タイプ

説明

table_name (必須)

str

テーブル名。

index_name (必須)

str

検索インデックス名。

index_meta (必須)

SearchIndexMeta

検索インデックスの設定。

インデックス設定

index_metaSearchIndexMeta 型で、次のパラメーターを使用できます。

名前

タイプ

説明

fields (必須)

List[FieldSchema]

インデックスフィールド。

index_setting (任意)

IndexSetting

インデックス設定。

index_sort (任意)

Sort

プリソートの設定。このパラメーターを設定せず、かつインデックスに Nested フィールドが含まれていない場合、データはプライマリキーでソートされます。Nested インデックスはプリソートをサポートしていません。

time_to_live (任意)

int

インデックスデータの TTL (秒)。デフォルト値:-1。値は -1 または 86400 以上の整数である必要があります。-1 を指定すると、インデックスデータは期限切れになりません。別の値を指定する場合は、テーブルで UpdateRow による更新を無効にしてください。インデックスの TTL はテーブルの TTL を超えることはできません。インデックス作成後に update_search_index でこの値を変更できます。詳細については、「ライフサイクル管理」をご参照ください。

インデックスフィールド

index_meta.fields[] の各要素は FieldSchema 型で、次のパラメーターを使用できます。

名前

タイプ

説明

field_name (必須)

str

インデックスフィールド名。このフィールドは、プライマリキー列または属性列に対応できます。

field_type (必須)

FieldType

インデックスフィールドの型。多層の論理関係には Nested、JSON 形式のデータには JSON、地理座標には Geo-point を使用します。

index (任意)

bool

フィールドに対して転置インデックスまたは空間インデックスを作成するかどうかを指定します。デフォルト値: False。フィールドをクエリするには、このパラメーターを True に設定します。

enable_highlighting (任意)

bool

サマリーとハイライトを有効にするかどうかを指定します。この機能は、テキストフィールドでのみサポートされています。デフォルト値は False です。このパラメーターには、Tablestore SDK for Python 6.0.0 以降が必要です。最新バージョンを使用することをお勧めします。

analyzer (任意)

str

テキストフィールドの アナライザー。このパラメーターを設定しない場合は、単文字分割が使用されます。

analyzer_parameter (任意)

AnalyzerParameter

アナライザーのパラメーター。 analyzer が設定されている場合は、選択したアナライザーのパラメーターを指定します。

enable_sort_and_agg (任意)

bool

並べ替えと集計を有効にするかどうかを指定します。デフォルト値: False。 Text フィールドと Nested フィールドでは、並べ替えや集計はサポートされていません。ただし、Nested フィールドの子フィールドはサポートされています。

is_array (任意)

bool

フィールドが配列であるかどうかを指定します。デフォルト値:False。配列値は JSON 配列として記述する必要があります。Nested フィールドの場合、このパラメーターを設定する必要はありません。

sub_field_schemas (任意)

List[FieldSchema]

Nested または JSON フィールドの子フィールド。このパラメーターは Nested フィールドと JSON フィールドでは必須です。

is_virtual_field (任意)

bool

フィールドが仮想列であるかどうかを指定します。デフォルト値: False

source_fields (任意)

List[str]

仮想カラムにマッピングされるソーステーブルのフィールド。このパラメーターは仮想カラムでは必須です。サポートされるソースフィールドは 1 つのみです。

date_formats (任意)

List[str]

Date フィールドでサポートされる日付形式。このパラメーターは Date フィールドでは必須です。

vector_options (任意)

VectorOptions

ベクトルフィールドのベクトルデータ型、次元、距離メトリック。このパラメーターはベクトルフィールドでは必須です。

json_type (任意)

JsonType

JSON インデックスタイプ。有効な値は JsonType.OBJECT_JSON および JsonType.NESTED_JSON です。このパラメーターは JSON フィールドには必須です。

text_similarity (任意)

TextSimilarity

テキストフィールドの類似度アルゴリズム。有効な値は TextSimilarity.BM25TextSimilarity.SHORT_TEXT です。

ベクトル設定

index_meta.fields[].vector_optionsVectorOptions 型で、次のパラメーターを使用できます。

名前

タイプ

説明

data_type (必須)

VectorDataType

ベクトルデータ型。VectorDataType.VD_FLOAT_32 のみがサポートされています。

dimension (必須)

int

ベクトルの次元。最大値: 4096。

metric_type (必須)

VectorMetricType

距離メトリックです。有効な値は、VectorMetricType.VM_EUCLIDEANVectorMetricType.VM_COSINE、および VectorMetricType.VM_DOT_PRODUCT です。詳細については、「ベクトル検索」をご参照ください。

インデックス設定

index_meta.index_settingIndexSetting 型で、次のパラメーターを使用できます。

名前

タイプ

説明

routing_fields (任意)

List[str]

カスタムルーティングフィールド。1 つ以上のプライマリキー列を指定できます。通常は 1 列を指定します。複数列を指定した場合は、値が連結されます。ルーティングフィールド値が同一のレコードは、同一のデータパーティションに書き込まれます。

プリソートの設定

index_meta.index_sortSort 型で、次のパラメーターを使用できます。

名前

タイプ

説明

sorters (必須)

List[Sorter]

事前ソート ルール。 PrimaryKeySort はプライマリキーでソートし、FieldSort はフィールド値でソートします。 FieldSort で使用されるフィールドは、ソートと集計が有効になっている必要があります。 詳細については、「ソートとページング」をご参照ください。

プライマリキーソート

index_meta.index_sort.sorters[] 内の PrimaryKeySort 型の要素は、主キーでデータをソートし、次のパラメーターを提供します。

名前

タイプ

説明

sort_order (任意)

SortOrder

ソート順。有効な値: SortOrder.ASC および SortOrder.DESC。デフォルト値: SortOrder.ASC

フィールド値ソート

index_meta.index_sort.sorters[]FieldSort タイプの要素は、フィールド値でデータをソートし、以下のパラメーターを提供します。

名前

タイプ

説明

field_name (必須)

str

フィールド名。

sort_order (任意)

SortOrder

ソート順。有効な値: SortOrder.ASC および SortOrder.DESC。デフォルト値: SortOrder.ASC

sort_mode (任意)

SortMode

フィールドに複数の値が含まれる場合に、ソートに使用する値。

プリソートの設定

次の例では、created_at フィールドでインデックスデータを昇順に事前にソートします。

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)

インデックス TTL の設定

次の例では、インデックスの TTL を 7 日に設定します。

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)

トークン化の設定

次の例では、テキストフィールド description の分割トークン化を設定し、区切り文字としてコンマ (,) を使用します。

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)

ベクトルフィールドの作成

次の例では、embedding という名前の 4次元ベクトルフィールドを作成し、ドット積を使用してベクトル類似度を測定します。

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)

仮想カラムの作成

次の例では、キーワードフィールド category を Long 型の仮想列に、Long フィールド price を Keyword 型の仮想列にマッピングします。

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)

ハイライトの有効化

次の例では、テキストフィールド description のハイライトを有効にします。

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)