CreateSearchIndex オペレーションを呼び出して、データテーブルに1つ以上の検索インデックスを作成できます。検索インデックスを作成する際に、クエリ対象のフィールドを検索インデックスに追加し、検索インデックスの詳細設定を構成できます。たとえば、ルーティングキーと事前ソート設定を構成できます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
maxVersions パラメータが 1 に設定され、timeToLive パラメータが -1 に設定されたデータテーブルが作成されていること。詳細については、データテーブルの作成を参照してください。
使用方法
検索インデックス内のフィールドのデータ型は、検索インデックスが作成されるデータテーブル内のフィールドのデータ型と一致する必要があります。詳細については、データ型のマッピングを参照してください。
API オペレーション
/**
* 検索インデックスを作成します。
* @api
*
* @param [] $request
* リクエストパラメータ。テーブル名とインデックス設定が含まれます。
* @return [] レスポンス。
* @throws OTSClientException パラメータエラーが発生した場合、または Tablestore サーバーが検証エラーを返した場合にスローされる例外。
* @throws OTSServerException Tablestore サーバーがエラーを返した場合にスローされる例外。
* @example "src/examples/CreateSearchIndex.php"
*/
public function createSearchIndex(array $request)
パラメータ
検索インデックスを作成する際は、table_name、index_name、および schema パラメータを指定する必要があります。schema パラメータには、field_schemas、index_setting、および index_sort パラメータを指定します。次の表にパラメータを示します。
パラメータ | 説明 |
table_name | データテーブルの名前。 |
index_name | 検索インデックスの名前。 |
field_schemas | フィールドスキーマのリスト。各フィールドスキーマには、次のパラメータが含まれます。
|
index_setting | 検索インデックスの設定。routing_fields パラメータが含まれます。 routing_fields: オプション。このパラメータは、カスタムルーティングフィールドを指定します。複数のプライマリキー列をルーティングフィールドとして指定できます。Tablestore は、指定されたルーティングフィールドに基づいて、検索インデックスに書き込まれたデータを異なるパーティションに分散します。同じルーティングフィールド値を持つデータは、同じパーティションに分散されます。 |
index_sort | 検索インデックスの事前ソート設定。sorters パラメータが含まれます。index_sort パラメータを指定しない場合、フィールド値はプライマリキーでソートされます。 説明 Nested 型のフィールドを含む検索インデックスの事前ソート設定はスキップできます。 sorters: 必須。このパラメータは、検索インデックスの事前ソート方法を指定します。PrimaryKeySort と FieldSort がサポートされています。詳細については、ソートとページングの実行を参照してください。
|
例
次のサンプルコードは、検索インデックスを作成する方法を示しています。この例では、検索インデックスは、Keyword 型の keyword 列、Text 型の text 列、Geo-point 型の geo 列、Long 型の long 列、Double 型の double 列、Boolean 型の boolean 列、Keyword 型の array 列、および Nested 型の nested 列で構成されています。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,
'store' => true,
'is_array' => false
),
array(
'field_name' => 'text',
'field_type' => FieldTypeConst::TEXT,
'analyzer' => 'single_word',
'index' => true,
'enable_sort_and_agg' => false,
'store' => true,
'is_array' => false
),
// ... (rest of the code remains unchanged)
FAQ
関連情報
検索インデックスを作成した後、検索インデックスで提供されるクエリメソッドを使用して、ビジネス要件に基づいて多次元からデータをクエリできます。次のクエリメソッドがサポートされています。用語クエリ、複数用語クエリ、すべて一致クエリ、一致クエリ、フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、地理クエリ、ブールクエリ、ネストクエリ、および 存在クエリ。
Search オペレーションを呼び出してデータをクエリする場合、ソートおよびページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、ソートとページングの実行を参照してください。
Search オペレーションを呼び出してデータをクエリする場合、折りたたみ (重複排除) 機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。これにより、指定された型のデータはクエリ結果に1回だけ表示されます。詳細については、折りたたみ (重複排除)を参照してください。
データテーブルのデータを分析する場合、Search オペレーションの集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計、および行の総数を取得できます。詳細については、集計と SQL クエリを参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合、ParallelScan オペレーションと ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。
検索インデックスのスキーマを動的に変更して、検索インデックスにインデックス列を追加、更新、または削除できます。詳細については、検索インデックスのスキーマを動的に変更するを参照してください。
ListSearchIndex オペレーションを呼び出して、データテーブルに作成されたすべての検索インデックスをクエリできます。詳細については、検索インデックスの一覧表示を参照してください。
DescribeSearchIndex オペレーションを呼び出して、検索インデックスの説明をクエリできます。たとえば、フィールド情報と検索インデックス設定をクエリできます。詳細については、検索インデックスの説明のクエリを参照してください。
不要になった検索インデックスを削除できます。詳細については、検索インデックスの削除を参照してください。