`CreateSearchIndex` メソッドを使用して、データテーブルの多次元インデックスを作成できます。1 つのデータテーブルに複数の多次元インデックスを作成できます。多次元インデックスを作成する際は、クエリ対象のフィールドをインデックスに追加する必要があります。また、カスタムルートや事前ソートなどの高度なオプションも設定できます。
前提条件
Tablestore クライアントが初期化されていること。詳細については、「Tablestore クライアントの初期化」をご参照ください。
データテーブルが作成されていること。テーブルの `max versions` は 1、`time to live` は -1 である必要があります。詳細については、「データテーブルの作成」をご参照ください。
注意事項
多次元インデックスを作成する際、多次元インデックス内のフィールドのデータの型は、データテーブル内の対応するフィールドのデータの型と一致している必要があります。
API
/**
* 多次元インデックスを作成します。
* @api
*
* @param [] $request
* テーブル名やインデックス設定などのリクエストパラメーター。
* @return [] 応答。
* @throws OTSClientException パラメーターチェックに失敗した場合、またはサーバーが検証エラーを返した場合にスローされます。
* @throws OTSServerException Tablestore サーバーがエラーを返した場合にスローされます。
* @example "src/examples/CreateSearchIndex.php"
*/
public function createSearchIndex(array $request)パラメータ
多次元インデックスを作成する際は、テーブル名 (`table_name`)、多次元インデックス名 (`index_name`)、およびインデックススキーマ (`schema`) を指定する必要があります。スキーマには、`field_schemas` (すべてのインデックスフィールドの設定)、`index_setting` (インデックス設定)、および `index_sort` (インデックスの事前ソート設定) が含まれます。次の表にパラメーターを示します。
パラメータ | 説明 |
table_name | データテーブルの名前。 |
index_name | サーチインデックスの名前。 |
field_schemas | フィールドスキーマのリスト。各 `field_schema` には、次のパラメーターが含まれます:
|
index_setting | インデックス設定。`routing_fields` 設定が含まれます。 routing_fields (任意):カスタムルーティングフィールド。一部のプライマリキー列をルーティングフィールドとして選択できます。ほとんどの場合、1 つだけ設定すれば十分です。複数のルーティングキーを設定した場合、システムはそれらの値を連結して単一の値にします。 |
index_sort | インデックスの事前ソート設定。`sorters` 設定が含まれます。これが設定されていない場合、データはデフォルトでプライマリキーによってソートされます。 説明 Nested 型のフィールドを含むインデックスは `index_sort` をサポートしておらず、事前ソートされません。 sorters (必須):このパラメーターは、多次元インデックスの事前ソート方法を指定します。PrimaryKeySort と FieldSort がサポートされています。詳細については、「ソートとページング」をご参照ください。
|
例
次のサンプルコードは、多次元インデックスを作成する方法を示しています。この例では、多次元インデックスは、Keyword 型のキーワード列、Text 型のテキスト列、Geo-point 型のジオ列、Long 型の long 列、Double 型の double 列、Boolean 型のブール列、Keyword 型の配列列、および Nested 型のネスト列で構成されています。ネスト列には、Keyword 型の `nested_keyword` サブ列が含まれています。多次元インデックス内のデータは、データテーブルのプライマリキーに基づいて事前ソートされ、有効期限が切れないように設定されています。
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'schema' => array(
'field_schemas' => array(
array(
'field_name' => 'keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'text',
'field_type' => FieldTypeConst::TEXT,
'analyzer' => 'single_word',
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'geo',
'field_type' => FieldTypeConst::GEO_POINT,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'long',
'field_type' => FieldTypeConst::LONG,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'double',
'field_type' => FieldTypeConst::DOUBLE,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'boolean',
'field_type' => FieldTypeConst::BOOLEAN,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'array',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => true
),
array(
'field_name' => 'nested',
'field_type' => FieldTypeConst::NESTED,
'index' => false,
'enable_sort_and_agg' => false,
'field_schemas' => array(
array(
'field_name' => 'nested_keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => false,
'enable_sort_and_agg' => false,
'is_array' => false
)
)
),
),
'index_setting' => array(
'routing_fields' => array("pk1")
),
// "index_sort" => array(// Nested 型のフィールドを含むインデックスは index_sort をサポートしておらず、事前ソートされません。
// array(
// 'field_sort' => array(
// 'field_name' => 'keyword',
// 'order' => SortOrderConst::SORT_ORDER_ASC,
// 'mode' => SortModeConst::SORT_MODE_AVG,
// )
// ),
// array(
// 'pk_sort' => array(
// 'order' => SortOrderConst::SORT_ORDER_ASC
// )
// ),
// )
)
);
$response = $otsClient->createSearchIndex($request);FAQ
関連ドキュメント
多次元インデックスを作成した後、そのクエリメソッドを使用して、複数のディメンションでデータをクエリできます。サポートされているクエリメソッドには、term クエリ、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、プレフィックスクエリ、範囲クエリ、ワイルドカード検索、ジオクエリ、ブールクエリ、ネストされたクエリ、および exists クエリ があります。
データをクエリする際、結果セットにソートとページングまたは折りたたみ (重複排除) を適用できます。
検索インデックスを作成した後、要件に基づいて管理できます。 詳細については、「スキーマを動的に変更する」、「検索インデックスを一覧表示する」、「検索インデックスの説明をクエリする」、および「検索インデックスを削除する」をご参照ください。
最大値と最小値の検索、合計の計算、行数のカウントなどのデータ分析を実行する場合は、統計的集計機能または SQL クエリ機能を使用できます。
データを迅速にエクスポートし、結果セット全体の順序が重要でない場合は、並列スキャン機能を使用できます。