Tablestore CLI を使用して検索インデックスを作成および管理することで、プライマリキー以外の列でデータをクエリしたり、複数の条件を組み合わせたりできます。
前提条件
Tablestore CLI のアクセス認証情報が設定されていること。詳細については、「Tablestore CLI」をご参照ください。
データテーブルが作成されていること。詳細については、「データテーブル操作」をご参照ください。
検索インデックスの作成
create_search_index -n <indexName>
|
パラメーター |
必須 |
説明 |
|
-i, --input |
いいえ |
検索インデックスのスキーマを定義する JSON ファイルへのパスです。指定しない場合、CLI によって対話形式で入力を求められます。 |
|
-n, --name |
はい |
検索インデックスの名前です。 |
|
-t, --table |
いいえ |
データテーブルの名前です。 |
|
--ttl |
いいえ |
有効期間 (TTL) は、データが保持される期間を指定します。単位は秒です。デフォルト値は -1 で、データは無期限に保持されます。最小値は 86400 (1 日) です。TTL を超えたデータは自動的に削除されます。 重要
検索インデックスの ライフサイクル管理 機能を使用するには、データテーブルの UpdateRow 操作を無効にしてください。検索インデックスの TTL とデータテーブルの TTL は独立しています。検索インデックスの TTL は、データテーブルの TTL 以下である必要があります。 |
プロンプトが表示されたら、インデックススキーマを JSON 形式で入力するか、-i パラメーターを使用してスキーマファイルを指定します。スキーマには次の設定が含まれます:
|
パラメーター |
必須 |
説明 |
|
IndexSetting |
いいえ |
インデックス設定です。RoutingFields を含みます。 RoutingFields (オプション):カスタムルーティングフィールドです。プライマリキー列をルーティングフィールドとして選択します。同じルーティングフィールド値を持つデータは、読み書き時に同じパーティションに分散され、クエリパフォーマンスが向上します。通常、ルーティングフィールドは 1 つだけ設定します。複数のルーティングフィールドを設定した場合、Tablestore はそれらの値を連結して 1 つにします。 |
|
FieldSchemas |
はい |
FieldSchema オブジェクトのリストです。各 FieldSchema には次のフィールドが含まれます:
|
|
IndexSort |
いいえ |
インデックスの事前ソート設定です。デフォルトでは、プライマリキーによってソートされます。 重要
Nested フィールドを含むインデックスは IndexSort をサポートしておらず、事前ソートはできません。 Sorters (オプション):事前ソートの方法です。プライマリキーによるソート (PrimaryKeySort) とフィールド値によるソート (FieldSort) をサポートしています。詳細については、「ソートとページング」をご参照ください。
|
例
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 |
いいえ |
データテーブルの名前です。 |
例
現在のデータテーブルの検索インデックスを詳細付きで一覧表示します。
list_search_index -d
検索インデックスの詳細
describe_search_index -n <indexName>
|
パラメーター |
必須 |
説明 |
|
-n, --name |
はい |
検索インデックスの名前です。 |
|
-o, --output |
いいえ |
出力をローカルの JSON または TXT ファイルに保存します。 |
|
-t, --table |
いいえ |
データテーブルの名前です。 |
例
search_index インデックスの詳細を表示します。
describe_search_index -n search_index
出力の Index schema フィールドには検索インデックスのスキーマが含まれます。TimeToLive は検索インデックスの有効期間 (TTL) を示します。
検索インデックスを使用したデータクエリ
Tablestore CLI は、タームクエリ、タームズクエリ、マッチオールクエリ、マッチクエリ、マッチフレーズクエリ、プレフィックスクエリ、レンジクエリ、ワイルドカードクエリ、トークンベースのワイルドカードクエリ、ブールクエリ、Geo クエリ、Exists クエリ の検索インデックスクエリタイプをサポートしています。ユースケースに合ったクエリタイプを選択してください。
search -n <indexName> --return_all_indexed
|
パラメーター |
必須 |
説明 |
|
-c, --column |
いいえ |
返却する列です。複数の列名はカンマ (,) で区切ります。 |
|
-n, --name |
はい |
検索インデックスの名前です。 |
|
-f, --print_format |
いいえ |
出力形式です。デフォルト値は table です。 |
|
--return_all |
いいえ |
すべての列を返却します。 |
|
--return_all_indexed |
いいえ |
検索インデックス内のすべてのインデックスが作成された列を返却します。 |
|
-t, --table |
いいえ |
データテーブルの名前です。 |
プロンプトが表示されたら、クエリ条件を 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 |
いいえ |
集計 の設定です。最小値、最大値、合計、平均、カウント、および個別カウントの操作をサポートしています。
|
例
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 |
いいえ |
データテーブルの名前です。 |
|
-y, --yes |
はい |
削除の確認です。このパラメーターはコマンドで必須です。 |
例
search_index インデックスを削除します。
drop_search_index -n search_index -y