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

Tablestore:検索インデックス

最終更新日:Jun 11, 2025

非プライマリキー列に基づくクエリやブールクエリなど、さまざまなクエリメソッドを使用してデータテーブル内のデータをクエリする場合、データテーブルの検索インデックスを作成し、その検索インデックスを使用してデータをクエリできます。 このトピックでは、Tablestore CLI を使用して検索インデックスを作成、表示、使用、および削除する方法について説明します。

検索インデックスの作成

構文

create_search_index -n search_index_name

次の表にパラメータを示します。

パラメータ

必須

説明

-i, --input

いいえ

/tmp/indexschema.json

検索インデックススキーマの設定に使用する JSON ファイル。

-n, --name

はい

search_index

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

-t,--table

いいえ

mytable

データテーブルの名前。

--ttl

いいえ

-1

検索インデックス内のデータの保持期間。単位:秒。

デフォルト値:-1。 -1 の値は、検索インデックス内のデータが期限切れにならないことを指定します。 このパラメータは、-1 または 86400(1 日)以上の値に設定できます。

データの保持期間が TTL を超えると、Tablestore は期限切れのデータを自動的に削除します。

重要

検索インデックスの TTL 機能を使用するには、検索インデックスが作成されるデータテーブルで UpdateRow 操作を無効にする必要があります。 検索インデックスの TTL 値は、検索インデックスが作成されるデータテーブルの TTL 値とは独立しており、それ以下である必要があります。 詳細については、「検索インデックスの TTL を指定する」をご参照ください。

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": "uid",
            "FieldType": "LONG",
            "Index": true,
            "EnableSortAndAgg": true,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        },
        {
            "FieldName": "col2",
            "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
        },
        {
            "FieldName": "col1",
            "FieldType": "KEYWORD",
            "Index": true,
            "EnableSortAndAgg": true,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        },
        {
            "FieldName": "col3V",
            "FieldType": "LONG",
            "Index": true,
            "EnableSortAndAgg": true,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": true,
            "SourceFieldNames": [
                "col3"
            ]
        }
    ]
}

次の表に、検索インデックススキーマのパラメータを示します。

パラメータ

必須

説明

IndexSetting

いいえ

検索インデックスの設定。次のパラメータが含まれます。

RoutingFields(オプション):カスタムルートフィールド。 一部のプライマリキー列をルートフィールドとして指定できます。 ほとんどの場合、指定する必要があるルートフィールドは 1 つだけです。 複数のルートフィールドを指定すると、システムはルートフィールドの値を 1 つの値に連結してパーティションキーとして使用します。

Tablestore は、指定されたルートフィールドに基づいて、検索インデックスに書き込まれたデータを異なるパーティションに分散します。 ルートフィールドの値が同じデータレコードは、同じパーティションに分散されます。

FieldSchemas

はい

フィールドスキーマのリスト。各フィールドスキーマには、次のパラメータを設定できます。

  • FieldName(必須):検索インデックス内のフィールドの名前。値は列名として使用されます。タイプ:文字列。

    検索インデックスの列は、データテーブルのプライマリキー列または属性列にすることができます。

  • FieldType(必須):フィールドのタイプ。詳細については、データ型マッピングを参照してください。

  • IsArray(オプション):値が配列かどうかを指定します。タイプ:ブール値。

    このパラメータを true に設定すると、列はデータを配列として格納します。列に書き込まれるデータは JSON 配列である必要があります。例:["a","b","c"]

    ネストされた値は配列です。FieldType を Nested に設定する場合は、このパラメータをスキップします。

  • Index(オプション):列のインデックス作成を有効にするかどうかを指定します。タイプ:ブール値。

    デフォルト値:true。true の値は、Tablestore が列の転置インデックスまたは空間インデックスを作成することを示します。false の値は、Tablestore が列のインデックスを作成しないことを示します。

  • Analyzer(オプション):使用するアナライザーのタイプ。FieldType が Text に設定されている場合、このパラメータを設定できます。このパラメータを設定しない場合、デフォルトのアナライザータイプである単一単語トークン化が使用されます。トークン化の詳細については、トークン化を参照してください。

  • AnalyzerParameter:単一単語トークン化を使用する場合のトークン化設定。CaseSensitive パラメータと DelimitWord パラメータが含まれます。

    • CaseSensitive:大文字と小文字を区別するかどうかを指定します。デフォルト値:false。パラメータを false に設定すると、すべての文字が小文字に変換されます。システムが自動的に文字を小文字に変換する必要がない場合は、CaseSensitive パラメータを true に設定します。

    • DelimitWord:英数字をトークン化するかどうかを指定します。デフォルト値は false です。接続されている文字と数字は分割されません。数字と文字を分割する場合は、DelimitWord パラメータを true に設定します。

  • EnableSortAndAgg(オプション):ソートと集計を有効にするかどうかを指定します。タイプ:ブール値。

    ソートは、EnableSortAndAgg が true に設定されているフィールドに対してのみ有効にできます。詳細については、ソートとページングを参照してください。

    重要

    Nested タイプのフィールドはソートと集計をサポートしていませんが、Nested タイプのフィールドのサブカラムはソートと集計をサポートしています。

  • Store(オプション):フィールドの値を検索インデックスに格納するかどうかを指定します。タイプ:ブール値。

    Store パラメータを true に設定すると、データテーブルをクエリすることなく、検索インデックスから列の値を読み取ることができます。これにより、クエリのパフォーマンスが向上します。

  • IsVirtualField(オプション):列が仮想かどうかを指定します。タイプ:ブール値。デフォルト値:false。このパラメータは、仮想列を使用する場合にのみ必要です。仮想列の詳細については、仮想列を参照してください。

  • SourceFieldNames(オプション):仮想列がデータテーブル内でマッピングされるソースフィールドの名前を指定します。タイプ:文字列。このパラメータは、IsVirtualField が true に設定されている場合に必要です。

IndexSort

いいえ

検索インデックスの事前ソート設定。Sorters パラメータが含まれます。IndexSort パラメータに値が指定されていない場合、フィールド値はデフォルトでプライマリキーに基づいてソートされます。

重要

Nested タイプのフィールドを含む検索インデックスの事前ソート設定はスキップできます。

Sorters(オプション):インデックス作成の事前ソート方法。Name パラメータと Sorter パラメータが含まれます。PrimaryKeySort メソッドと FieldSort メソッドを使用できます。詳細については、ソートとページングの実行を参照してください。

  • Name:ソート方法。有効な値:

    • PrimaryKeySort は、プライマリキーによるソートを示します。

    • FieldSort は、フィールド値によるソートを示します。

      インデックス作成が有効になっており、enableSortAndAgg が true に設定されているフィールドのみを事前ソートできます。

  • Sorter:このパラメータには、次の設定が含まれます。

    Name が PrimaryKeySort に設定されている場合は、Order のみが必須です。Name が FieldSort に設定されている場合は、FieldName と Order の両方が必須です。

    • FieldName:データをソートするために使用されるフィールドの名前。

    • Order:ソート順。昇順(ASC)または降順(DESC)を指定できます。デフォルト値:ASC。

検索インデックスのリストの取得

構文

list_search_index

次の表にパラメータを示します。

パラメータ

必須

説明

-a, --all

いいえ

該当なし

すべてのデータテーブルの検索インデックスを表示することを指定します。

-d, --detail

いいえ

該当なし

検索インデックスの詳細を表示することを指定します。

-t,--table

いいえ

mytable

データテーブルの名前。

現在のデータテーブルの検索インデックスのリストを取得します。

list_search_index

検索インデックスに関する情報のクエリ

構文

describe_search_index -n search_index_name

次の表にパラメータを示します。

パラメータ

必須

説明

-n, --name

はい

search_index

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

-o, --output

いいえ

/tmp/describeinfo.json

クエリ結果をコンピュータ上の JSON または TXT 形式のファイルにエクスポートします。

-t,--table

いいえ

mytable

データテーブルの名前。

search_index という名前の検索インデックスに関する情報をクエリします。

describe_search_index -n search_index

返された結果の Index schema パラメータは検索インデックススキーマを表し、TimeToLive は検索インデックスのデータ保存期間を示します。

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

Tablestore CLI では、検索インデックスの次のクエリメソッドを使用できます。複数値完全一致検索term 検索完全一致検索一致検索フレーズ一致検索プレフィックス検索範囲クエリワイルドカード検索トークン化ベースのワイルドカード検索ブールクエリジオクエリexists クエリ。 業務要件に基づいてクエリメソッドを選択し、複数のディメンションからデータをクエリできます。

構文

search -n search_index_name --return_all_indexed

次の表にパラメータを示します。

パラメータ

必須

説明

-c, --column

いいえ

col1,col2

返す列。複数の列はコンマ(,)で区切ります。

-n, --name

はい

search_index

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

-f, --print_format

いいえ

table

出力結果を出力する形式。デフォルト値:table。

--return_all

いいえ

該当なし

すべての列を返すことを指定します。

--return_all_indexed

いいえ

該当なし

検索インデックスでインデックスが作成されているすべての列を返すことを指定します。

-t,--table

いいえ

mytable

データテーブルの名前。

  1. search_index という名前の検索インデックスを使用してデータをクエリし、インデックスが作成されているすべての列を返します。

    search -n search_index --return_all_indexed
  2. システムのプロンプトに従ってクエリ条件を入力します。

    次のサンプルコードは、uid 列の値が 10001 と完全に一致する行をクエリし、それらの行の pid 列の値の平均を取得する例を示しています。

    {
        "Offset": -1,
        "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"
            }
        }]
    }

    次の表にパラメータを示します。

パラメータ

必須

説明

Offset

いいえ

現在のクエリが開始される位置。

Limit

いいえ

現在のクエリで返す最大行数。

現在のクエリで複数のランダムなデータ行を返す場合は、limit を正の整数に設定します。

特定のデータを返さずに、クエリ条件を満たす行数のみをクエリするには、limit を 0 に設定します。

Collapse

いいえ

collapse パラメータの設定。指定された列の結果セットを折りたたんで、指定されたタイプのデータが結果セットに 1 回だけ表示されるようにするために使用できます。これにより、結果セットの多様性が確保されます。詳細については、Collapse (distinct) を参照してください。

FieldName:結果セットの折りたたみの基準となる列の名前。値が INTEGER、FLOATING-POINT、KEYWORD データタイプの列のみがサポートされています。

Sort

いいえ

結果のソート方法。詳細については、ソートとページングの「データのクエリ時にソート方法を指定する」セクションを参照してください。

クエリでソート方法が指定されていない場合、クエリ結果は事前ソート方法によって返されます。検索インデックスの作成時に事前ソート方法が指定されていない場合、クエリ結果はプライマリキーによってソートされます。

GetTotalCount

いいえ

クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメータのデフォルト値は false で、クエリ条件を満たす行の総数が返されないことを示します。

このパラメータを true に設定すると、クエリのパフォーマンスが低下します。一致する行の総数を取得するには、GetTotalCount を true に設定します。

Token

いいえ

Tablestore がクエリ条件を満たすすべてのデータを読み取ることができない場合、Tablestore は Token を返します。Token 値を使用して、後続のデータの読み取りを続行できます。初めてデータを読み取る場合は、token 値を null に設定します。

Query

はい

クエリメソッド。 完全一致検索(MatchAllQuery)、一致検索(MatchQuery)、フレーズ一致検索(MatchPhraseQuery)、複数値完全一致検索(TermQuery)、term 検索(TermsQuery)、プレフィックス検索(PrefixQuery)などのクエリメソッドがサポートされています。

Aggregations

いいえ

集計操作の設定。集計操作を実行して、行の最小値、最大値、合計、平均、カウント、個別カウントを取得できます。詳細については、集計を参照してください。

  • Name:集計操作タイプ(min、max、sum、avg、count など)。

  • Aggregation:集計パラメータ。次のパラメータが含まれます。

    • AggName:集計を区別するために使用されるカスタム名。

    • Field:集計に使用されるフィールド。

    • MissingValue:レコード内でフィールドが空の場合のフィールドのデフォルト値。MissingValue が設定されていない場合、レコードは集計中に無視されます。MissingValue が設定されている場合、設定値が集計のフィールドの値として使用されます。

検索インデックスの削除

構文

drop_search_index -n search_index_name -y

次の表にパラメータを示します。

パラメータ

必須

説明

-n, --name

はい

search_index

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

-t,--table

いいえ

mytable

データテーブルの名前。

-y, --yes

はい

該当なし

確認情報が表示されることを指定します。このパラメータは必須です。

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

drop_search_index -n search_index -y