非プライマリキー列に基づくクエリやブールクエリなど、さまざまなクエリメソッドを使用してデータテーブル内のデータをクエリする場合、データテーブルの検索インデックスを作成し、その検索インデックスを使用してデータをクエリできます。 このトピックでは、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 | はい | フィールドスキーマのリスト。各フィールドスキーマには、次のパラメータを設定できます。
|
IndexSort | いいえ | 検索インデックスの事前ソート設定。Sorters パラメータが含まれます。IndexSort パラメータに値が指定されていない場合、フィールド値はデフォルトでプライマリキーに基づいてソートされます。 重要 Nested タイプのフィールドを含む検索インデックスの事前ソート設定はスキップできます。 Sorters(オプション):インデックス作成の事前ソート方法。Name パラメータと Sorter パラメータが含まれます。PrimaryKeySort メソッドと FieldSort メソッドを使用できます。詳細については、ソートとページングの実行を参照してください。
|
検索インデックスのリストの取得
構文
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 | データテーブルの名前。 |
例
search_index という名前の検索インデックスを使用してデータをクエリし、インデックスが作成されているすべての列を返します。
search -n search_index --return_all_indexed
システムのプロンプトに従ってクエリ条件を入力します。
次のサンプルコードは、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 | いいえ | 集計操作の設定。集計操作を実行して、行の最小値、最大値、合計、平均、カウント、個別カウントを取得できます。詳細については、集計を参照してください。
|
検索インデックスの削除
構文
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