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

:検索インデックス

最終更新日:Dec 28, 2024

データテーブルを作成した後、Tablestore CLI を使用して、検索インデックスの作成、検索インデックスのリストの取得、検索インデックスに関する情報のクエリ、検索インデックスを使用したクエリ、および検索インデックスの削除を行うことができます。

検索インデックスの作成

検索インデックスを作成できます。

構文

create_search_index -n search_index_name

パラメータの説明:

パラメータ

必須

説明

-i, --input

いいえ

/tmp/indexschema.json

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

-n, --name

はい

search_index

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

-t,--table

いいえ

mytable

データテーブルの名前。

--ttl

いいえ

-1

データの保存期間。システムは、Time-to-live (TTL) メカニズムに基づいてデータを削除します。保存期間が TTL を超えると、Tablestore は期限切れのデータを自動的に削除します。デフォルト値:-1。単位:秒。

値 -1 は、データが期限切れにならないことを示します。データ TTL を指定する場合、値は 86400 秒(1 日)以上である必要があります。

重要

TTL 機能を使用するには、検索インデックスが作成されるデータテーブルの「更新を許可」を「いいえ」に設定する必要があります。検索インデックスの 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(オプション):カスタムルーティングフィールド。一部のプライマリキー列をルーティングフィールドとして指定できます。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

結果の例:

+-----------+--------------+
| TableName | IndexName    |
+-----------+--------------+
| mytable   | 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 は検索インデックスのデータ保存期間を示します。

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

検索インデックスを使用して、指定された条件を満たすデータをクエリし、返された結果に対して集計操作を実行できます。

構文

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

データテーブルの名前。

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

search -n search_index --return_all_indexed

システムのプロンプトに従ってクエリ条件を入力します。

{
    "Offset": -1,
    "Limit": 10,
    "Collapse": null,
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "BoolQuery",
        "Query": {
            "MinimumShouldMatch": null,
            "MustQueries": null,
            "MustNotQueries": null,
            "FilterQueries": null,
            "ShouldQueries": [{
                "Name": "RangeQuery",
                "Query": {
                    "FieldName": "gid",
                    "From": null,
                    "To": 10,
                    "IncludeLower": false,
                    "IncludeUpper": false
                }
            }, {
                "Name": "TermQuery",
                "Query": {
                    "FieldName": "gid",
                    "Term": "77"
                }
            }]
        }
    },
    "Aggregations": [{
        "Name": "avg",
        "Aggregation": {
            "AggName": "agg1",
            "Field": "gid",
            "MissingValue": null
        }
    }]
}

パラメータの説明:

パラメータ

必須

説明

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)、用語クエリ(TermsQuery)、プレフィックスクエリ(PrefixQuery)などのクエリメソッドがサポートされています。詳細については、Tablestore SDK の使用を参照してください。

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