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

Tablestore:検索インデックス

最終更新日:Jun 05, 2026

Tablestore CLI を使用して検索インデックスを作成および管理することで、プライマリキー以外の列でデータをクエリしたり、複数の条件を組み合わせたりできます。

前提条件

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

  • データテーブルが作成されていること。詳細については、「データテーブル操作」をご参照ください。

検索インデックスの作成

create_search_index -n <indexName>

パラメーター

必須

説明

-i, --input

いいえ

検索インデックスのスキーマを定義する JSON ファイルへのパスです。指定しない場合、CLI によって対話形式で入力を求められます。

-n, --name

はい

検索インデックスの名前です。

-t, --table

いいえ

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

--ttl

いいえ

有効期間 (TTL) は、データが保持される期間を指定します。単位は秒です。デフォルト値は -1 で、データは無期限に保持されます。最小値は 86400 (1 日) です。TTL を超えたデータは自動的に削除されます。

重要

検索インデックスの ライフサイクル管理 機能を使用するには、データテーブルの UpdateRow 操作を無効にしてください。検索インデックスの TTL とデータテーブルの TTL は独立しています。検索インデックスの TTL は、データテーブルの TTL 以下である必要があります。

プロンプトが表示されたら、インデックススキーマを JSON 形式で入力するか、-i パラメーターを使用してスキーマファイルを指定します。スキーマには次の設定が含まれます:

パラメーター

必須

説明

IndexSetting

いいえ

インデックス設定です。RoutingFields を含みます。

RoutingFields (オプション):カスタムルーティングフィールドです。プライマリキー列をルーティングフィールドとして選択します。同じルーティングフィールド値を持つデータは、読み書き時に同じパーティションに分散され、クエリパフォーマンスが向上します。通常、ルーティングフィールドは 1 つだけ設定します。複数のルーティングフィールドを設定した場合、Tablestore はそれらの値を連結して 1 つにします。

FieldSchemas

はい

FieldSchema オブジェクトのリストです。各 FieldSchema には次のフィールドが含まれます:

  • FieldName (必須):検索インデックスのフィールド名 (列名) です。型は文字列です。検索インデックスのフィールドには、プライマリキー列または属性列を指定できます。

  • FieldType (必須):フィールドの データ型 です。

  • IsArray (オプション):フィールドが配列であるかどうかを指定します。型はブール値です。true に設定すると、列は配列となり、データは ["a","b","c"] のような JSON 配列形式で書き込む必要があります。Nested は配列型であるため、FieldType が Nested の場合はこのパラメーターを設定する必要はありません。

  • Index (オプション):インデックス作成を有効にするかどうかを指定します。型はブール値です。デフォルトは true で、列に対して転置インデックスまたは空間インデックスを構築します。false に設定すると、列に対してインデックスは構築されません。

  • Analyzer (オプション):トークン化 のタイプです。フィールドタイプが Text の場合にこのパラメーターを設定します。設定しない場合、デフォルトは 1 文字のトークン化です。

  • AnalyzerParameter:SingleWord アナライザーのパラメーターです。CaseSensitive (大文字と小文字を区別するかどうか。デフォルト:false) および DelimitWord (英単語と数字を分割するかどうか。デフォルト:false) を含みます。

  • EnableSortAndAgg (オプション):ソートと集計を有効にするかどうかを指定します。型はブール値です。EnableSortAndAgg が true に設定されているフィールドのみが ソート に使用できます。

    重要

    Nested フィールドはソートと集計をサポートしていません。ただし、Nested フィールド内のサブ列はソートと集計をサポートしています。

  • Store (オプション):フィールド値を検索インデックスに格納するかどうかを指定します。型はブール値です。有効にすると、データテーブルをクエリすることなく検索インデックスから直接フィールド値を読み取ることができ、クエリパフォーマンスが最適化されます。

  • IsVirtualField (オプション):列が 仮想列 であるかどうかを指定します。型はブール値です。デフォルト値は false です。true に設定した場合、SourceFieldNames が必須です。

  • SourceFieldNames (オプション):データテーブル内のフィールド名です。型は文字列です。IsVirtualField が true に設定されている場合に必須です。

IndexSort

いいえ

インデックスの事前ソート設定です。デフォルトでは、プライマリキーによってソートされます。

重要

Nested フィールドを含むインデックスは IndexSort をサポートしておらず、事前ソートはできません。

Sorters (オプション):事前ソートの方法です。プライマリキーによるソート (PrimaryKeySort) とフィールド値によるソート (FieldSort) をサポートしています。詳細については、「ソートとページング」をご参照ください。

  • Name:ソート方法です。PrimaryKeySort はプライマリキーでソートします。FieldSort はフィールド値でソートします。事前ソートできるのは、ソートと集計が有効になっているインデックスが作成されたフィールドのみです。

  • Sorter:FieldName (ソート用のフィールド名。フィールド値ソートに必須) と Order (ソート順:ASC は昇順、DESC は降順。デフォルト:ASC) を含みます。

search_index という名前の検索インデックスを作成します。

create_search_index -n search_index

プロンプトに従ってインデックススキーマを入力します。例:

{
    "IndexSetting": {
        "RoutingFields": null
    },
    "FieldSchemas": [
        {
            "FieldName": "gid",
            "FieldType": "LONG",
            "Index": true,
            "EnableSortAndAgg": true,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        },
        {
            "FieldName": "col3",
            "FieldType": "TEXT",
            "Index": true,
            "Analyzer": "single_word",
            "AnalyzerParameter": {
                "CaseSensitive": true,
                "DelimitWord": null
            },
            "EnableSortAndAgg": false,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        }
    ],
    "IndexSort": {
        "Sorters": [
            {
                "Name": "PrimaryKeySort",
                "Sorter": {
                    "Order": "ASC"
                }
            }
        ]
    }
}

ファイルから検索インデックスを作成します:

create_search_index -n search_index -i /tmp/indexschema.json

検索インデックスの一覧

list_search_index

パラメーター

必須

説明

-a, --all

いいえ

すべてのデータテーブルの検索インデックスを一覧表示します。

-d, --detail

いいえ

検索インデックスに関する詳細情報を表示します。

-t, --table

いいえ

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

現在のデータテーブルの検索インデックスを詳細付きで一覧表示します。

list_search_index -d

検索インデックスの詳細

describe_search_index -n <indexName>

パラメーター

必須

説明

-n, --name

はい

検索インデックスの名前です。

-o, --output

いいえ

出力をローカルの JSON または TXT ファイルに保存します。

-t, --table

いいえ

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

search_index インデックスの詳細を表示します。

describe_search_index -n search_index

出力の Index schema フィールドには検索インデックスのスキーマが含まれます。TimeToLive は検索インデックスの有効期間 (TTL) を示します。

検索インデックスを使用したデータクエリ

Tablestore CLI は、タームクエリタームズクエリマッチオールクエリマッチクエリマッチフレーズクエリプレフィックスクエリレンジクエリワイルドカードクエリトークンベースのワイルドカードクエリブールクエリGeo クエリExists クエリ の検索インデックスクエリタイプをサポートしています。ユースケースに合ったクエリタイプを選択してください。

search -n <indexName> --return_all_indexed

プロンプトが表示されたら、クエリ条件を JSON 形式で入力します。クエリ条件には次の設定が含まれます:

パラメーター

必須

説明

Offset

いいえ

結果を返し始める位置です。

Limit

いいえ

返却する行の最大数です。データを返さずに行数のみを取得するには、Limit を 0 に設定します。

Collapse

いいえ

Collapse の設定です。このパラメーターを使用して、特定の列によって結果セットを コラプス します。FieldName は列名を指定します。整数、浮動小数点、およびキーワード型の列のみがサポートされています。

Sort

いいえ

結果のソート順です。詳細については、「クエリ時の定義」をご参照ください。設定しない場合、結果は事前ソート順で返却されます。事前ソート順が定義されていない場合、結果はプライマリキー順で返却されます。

GetTotalCount

いいえ

一致した行の総数を返却するかどうかを指定します。デフォルト値は false です。このオプションを有効にすると、クエリのレイテンシーが増加する可能性があります。

Token

いいえ

残りの結果を読み取るためのページネーショントークンです。レスポンスにすべての一致した行が含まれていない場合、サーバーは Token を返却します。次のリクエストでこの Token を渡して、読み取りを続行します。最初のリクエストでは Token を null に設定します。

Query

はい

クエリタイプです。サポートされているタイプ:MatchAllQuery、MatchQuery、MatchPhraseQuery、TermQuery、TermsQuery、PrefixQuery、RangeQuery、WildcardQuery、ExistsQuery、NestedQuery、KnnVectorQuery、および BoolQuery。

Aggregations

いいえ

集計 の設定です。最小値、最大値、合計、平均、カウント、および個別カウントの操作をサポートしています。

  • Name:min、max、sum、avg、count などの集計タイプです。

  • Aggregation:AggName (カスタム集計名)、Field (集計するフィールド)、MissingValue (フィールドが空の場合のデフォルト値) を含む集計パラメーターの設定です。

search_index を使用して現在のテーブル内のデータをクエリし、すべてのインデックスが作成された列を返却します。

search -n search_index --return_all_indexed

プロンプトに従ってクエリ条件を入力します。次の例では、uid が 10001 の行をクエリし、pid 列の平均を計算します:

{
    "Offset": 0,
    "Limit": 10,
    "Collapse": null,
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "TermQuery",
        "Query": {
            "FieldName": "uid",
            "Term": 10001
        }
    },
    "Aggregations": [{
        "Name": "avg",
        "Aggregation": {
            "AggName": "agg1",
            "Field": "pid"
        }
    }]
}

検索インデックスの削除

drop_search_index -n <indexName> -y

パラメーター

必須

説明

-n, --name

はい

検索インデックスの名前です。

-t, --table

いいえ

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

-y, --yes

はい

削除の確認です。このパラメーターはコマンドで必須です。

search_index インデックスを削除します。

drop_search_index -n search_index -y