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

Tablestore:検索インデックスの Time to Live (TTL) 設定

最終更新日:Aug 06, 2026

Tablestore SDK for Python を使用して、検索インデックスの Time to Live (TTL) を設定します。Tablestore は、保持期間が終了するとインデックスデータを自動的に削除します。

前提条件

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

  • テーブルが存在し、最大データバージョン数が 1 に設定されていること。

注意事項

  • 検索インデックス TTL を管理する前に、テーブルの UpdateRow 操作を無効にして、テーブルと検索インデックス間のデータ不整合を防いでください。テーブルの TTL は個々の属性列に適用されるのに対し、検索インデックスの TTL は行全体に適用されます。UpdateRow を使用すると、TTL クリーンアップによってテーブルの一部の列のみが削除され、検索インデックス内では行全体が保持される場合があります。データを更新する場合は、PutRow を使用して行全体を上書きしてください。

  • 検索インデックス TTL は秒単位で、-1 または正の 32 ビット整数を指定できます。-1 を指定すると、データは永続的に保存されます。正の値の最大値は、約 68 年の保持期間に相当します。

  • 検索インデックス TTL とテーブル TTL は独立して設定しますが、検索インデックス TTL はテーブル TTL 以下である必要があります。目的の検索インデックス TTL が現在のテーブル TTL より大きい場合は、先にテーブル TTL を増やしてください。両方の TTL を減らす場合は、先に検索インデックス TTL を減らしてください。

  • Tablestore は、有効期限が切れた検索インデックスデータを 1 日に 1 回削除します。次回のクリーンアップが完了するまでは、削除されていない期限切れデータがクエリ結果に返される場合があります。テーブル TTL または検索インデックス TTL を更新した後、変更によって有効期限が切れるデータは次回のクリーンアップサイクルで削除されます。

操作手順

ライフサイクル管理は、テーブルの UpdateRow 操作の無効化、検索インデックス TTL の設定、および必要に応じたテーブル TTL の設定からなります。テーブル TTL の設定が常に最後の操作になるとは限りません。前述の TTL 制約に基づいて、手順 2 と手順 3 の順序を決定してください。

  1. テーブルの UpdateRow 操作を無効にします。

    次の例では、example_tableUpdateRow 操作を無効にします。

    table_options = TableOptions(
        time_to_live=None,
        max_version=None,
        max_time_deviation=None,
        allow_update=False,
    )
    client.update_table(
        "example_table",
        table_options=table_options,
    )
  2. 検索インデックス TTL を設定します。

    検索インデックスが既に存在するかどうかに応じて、いずれかのオプションを選択してください。

    新規インデックス

    検索インデックスの作成時に 7 日間の TTL を設定します。

    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(
        "example_table",
        "example_index",
        index_meta,
    )

    既存インデックス

    既存の検索インデックスの TTL を 7 日間に更新します。

    index_meta = SearchIndexMeta(
        fields=None,
        time_to_live=7 * 24 * 60 * 60,
    )
    client.update_search_index(
        "example_table",
        "example_index",
        index_meta,
    )
  3. 必要に応じてテーブル TTL を設定します。

    次の例では、example_table の TTL を 7 日間に設定します。前述の制約に基づいて、検索インデックス TTL の設定前または設定後にこの操作を実行してください。

    table_options = TableOptions(
        time_to_live=7 * 24 * 60 * 60,
        max_version=None,
        max_time_deviation=None,
        allow_update=False,
    )
    client.update_table(
        "example_table",
        table_options=table_options,
    )

設定後、テーブル情報をクエリし、検索インデックス情報をクエリして、両方の TTL を確認します。