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

Tablestore:セカンダリインデックス

最終更新日:Jun 05, 2026

Tablestore CLI を使用して、セカンダリインデックスを作成および管理します。

前提条件

  • Tablestore CLI がインストールされ、アクセス認証情報が設定されていること。詳細については、「Tablestore CLI」をご参照ください。

  • 定義済み列を持つデータテーブルが存在すること。最大バージョン数 (max versions) は 1 である必要があります。詳細については、「データテーブル操作」をご参照ください。

セカンダリインデックスの作成

データテーブルに対して、グローバルまたはローカルの セカンダリインデックス を作成します。

create_index -t <tableName> -n <indexName> -i <indexType> -k <primaryKeyName> -a <definedColumn>

パラメーター

必須

説明

-t, --table

いいえ

データテーブル名。use コマンドでデータテーブルが既に選択されている場合は不要です。

-n, --name

はい

セカンダリインデックス名。

-i, --index_type

いいえ

セカンダリインデックスのタイプ。有効な値:

  • global (デフォルト): グローバルセカンダリインデックス。データテーブルのインデックス列とプライマリキー列が、インデックステーブルに非同期でレプリケートされます。同期レイテンシーは通常ミリ秒単位です。

  • local: ローカルセカンダリインデックス。データはインデックステーブルに同期的に書き込まれます。データテーブルへの書き込み後、直ちにクエリが可能になります。

-k, --pk

はい

インデックステーブルのインデックス列。データテーブルのプライマリキー列と定義済み列で構成されます。複数の列はカンマで区切ります。ローカルセカンダリインデックスの場合、インデックステーブルの最初のプライマリキー列は、データテーブルの最初のプライマリキー列と同じである必要があります。

-a, --attr

はい

インデックステーブルの属性列。データテーブルの定義済み列です。複数の列はカンマで区切ります。

-b, --without_base_data

いいえ

セカンダリインデックス作成時に、データテーブルの既存データを除外します。デフォルトでは、既存データが含まれます。

  • データテーブル mytable に対して、既存データを含むグローバルセカンダリインデックス index0 を作成します。

    create_index -t mytable -n index0 -i global -k uid,pid -a name,col0
  • データテーブル mytable に対して、既存データを除外したグローバルセカンダリインデックス index1 を作成します。

    create_index -t mytable -n index1 -i global -k uid,pid -a name,col0 -b
  • データテーブル mytable に対して、ローカルセカンダリインデックス index2 を作成します。

    create_index -t mytable -n index2 -i local -k uid,name -a col0,col1

インデックステーブルの使用

後続のクエリおよびエクスポート操作のために、インデックステーブルを選択します。

use --wc -t <indexName>

パラメーター

必須

説明

--wc

いいえ

指定されたテーブルが多次元インデックスではなく、データテーブルまたはインデックステーブルであることを示します。

-t, --table

はい

インデックステーブル名。

インデックステーブル index0 を使用します。

use -t index0

インデックス情報の表示

desc コマンドを実行して、データテーブルとそのセカンダリインデックスに関する情報を表示します。

desc -t <tableName>

パラメーター

必須

説明

-t, --table

いいえ

データテーブルまたはインデックステーブル名。use コマンドでテーブルが既に選択されている場合は不要です。

-f, --print_format

いいえ

出力フォーマット。有効な値: json (デフォルト) および table。

-o, --output

いいえ

テーブル情報をローカルの JSON ファイルに出力します。

  • 現在のテーブルに関する情報を表示します。

    desc
  • テーブル情報をローカルファイルに保存します。

    desc -o /tmp/describe_table_meta.json

データの読み取り

プライマリキーを指定して、インデックステーブルから 1 行のデータを読み取ります。

説明

指定した行が存在しない場合、空の結果が返されます。

get -k '<pk_values>'

パラメーター

必須

説明

-k, --pk

はい

インデックステーブルのプライマリキー値。JSON 配列として表現されます。プライマリキー列の数と型は、インデックステーブルのものと一致する必要があります。

-c, --columns

いいえ

読み取る列。プライマリキー列または属性列を指定します。複数の列はカンマで区切ります。指定しない場合、行全体が返されます。

--max_version

いいえ

読み取る最大バージョン数。

--time_range_start

いいえ

指定されたタイムスタンプ範囲内のデータを読み取ります。time_range_starttime_range_end は、それぞれ開始タイムスタンプと終了タイムスタンプを指定します。範囲は半開区間です: [start, end)。

--time_range_end

いいえ

--time_range_specific

いいえ

特定のバージョン番号のデータを読み取ります。

-o, --output

いいえ

クエリ結果をローカルの JSON ファイルに出力します。

プライマリキー値が "86" と 6771 であるインデックステーブルの行を読み取ります。

get -k '["86", 6771]'

データのスキャン

インデックステーブルをスキャンして、すべてのデータまたは指定した行数を取得します。

scan --limit <n>

パラメーター

必須

説明

--limit

いいえ

返される最大行数。指定しない場合、テーブル内のすべての行がスキャンされます。

インデックステーブルから最大 10 行をスキャンします。

scan --limit 10

データのエクスポート

インデックステーブルからローカルの JSON ファイルにデータをエクスポートします。

scan -o /localpath/filename.json

パラメーター

必須

説明

-c, --columns

いいえ

エクスポートする列。プライマリキー列または属性列を指定します。複数の列はカンマで区切ります。指定しない場合、行全体がエクスポートされます。

--max_version

いいえ

エクスポートする最大バージョン数。

--time_range_start

いいえ

指定されたタイムスタンプ範囲内のデータをエクスポートします。time_range_starttime_range_end は、それぞれ開始タイムスタンプと終了タイムスタンプを指定します。範囲は半開区間です: [start, end)。

--time_range_end

いいえ

--time_range_specific

いいえ

特定のバージョン番号のデータをエクスポートします。

--backward

いいえ

プライマリキーの降順でデータをエクスポートします。

-o, --output

はい

データをエクスポートするローカルファイルパス。

-l, --limit

いいえ

エクスポートする最大行数。

-b, --begin

いいえ

エクスポート範囲の開始点と終了点。プライマリキー範囲は半開区間です: [start, end)。

説明
  • --begin[null,null] に設定されている場合、開始点は [INF_MIN,INF_MIN] となり、各プライマリキー列が最小値から開始されます。

  • --end[null,null] に設定されている場合、終了点は [INF_MAX,INF_MAX] となり、各プライマリキー列が最大値で終了します。

-e, --end

いいえ

  • インデックステーブルのすべてのデータをローカルファイルにエクスポートします。

    scan -o /tmp/mydata.json
  • uid と name 列のみをエクスポートします。

    scan -o /tmp/mydata.json -c uid,name
  • 指定したプライマリキー範囲内のデータをエクスポートします。

    scan -o /tmp/mydata.json -b '["86", 6771]' -e '["86", 6775]'

セカンダリインデックスの削除

不要になったインデックステーブルを削除します。

drop_index -t <tableName> -i <indexName> -y

パラメーター

必須

説明

-t, --table

いいえ

データテーブル名。use コマンドでデータテーブルが既に選択されている場合は不要です。

-i, --index

はい

セカンダリインデックス名。

-y, --yes

はい

削除の確認を省略します。

  • 現在のデータテーブルからインデックステーブル index0 を削除します。

    drop_index -i index0 -y
  • データテーブル mytable からインデックステーブル index0 を削除します。

    drop_index -t mytable -i index0 -y