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

Tablestore:検索インデックスの作成

最終更新日:Dec 28, 2024

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

フィールドスキーマのリスト。各フィールドスキーマには、次のパラメータが含まれます。

  • field_name: 必須。このパラメータは、検索インデックス内のフィールドの名前を指定します。値は列名として使用されます。このパラメータの値は STRING 型です。

    検索インデックスの列は、データテーブルのプライマリキー列または属性列です。

  • field_type: 必須。このパラメータは、フィールドの型を指定します。FieldType.XXX 形式で型を指定します。詳細については、データ型のマッピングを参照してください。

  • is_array: オプション。このパラメータは、値が配列かどうかを指定します。このパラメータの値は BOOLEAN 型です。

    このパラメータを true に設定すると、列はデータを配列として格納します。列に書き込まれるデータは JSON 配列である必要があります。例: ["a","b","c"]。

    Nested 型のフィールドの値は配列です。field_type パラメータを Nested に設定した場合、このパラメータは不要です。

  • index: オプション。このパラメータは、列のインデックス作成を有効にするかどうかを指定します。このパラメータの値は BOOLEAN 型です。

    デフォルト値: true。true の値は、Tablestore が列を転置インデックススキーマまたは時空間インデックススキーマでインデックスすることを指定します。false の値は、Tablestore が列のインデックス作成を有効にしないことを指定します。

  • analyzer: オプション。このパラメータは、使用するアナライザーの型を指定します。field_type パラメータを Text に設定した場合、このパラメータを指定できます。このパラメータを指定しない場合、デフォルトのアナライザー型である単一単語トークン化が使用されます。詳細については、トークン化を参照してください。

  • enable_sort_and_agg: オプション。このパラメータは、ソートと集計を有効にするかどうかを指定します。このパラメータの値は BOOLEAN 型です。

    ソートは、enable_sort_and_agg パラメータが true に設定されているフィールドに対してのみ実行できます。詳細については、ソートとページングの実行を参照してください。

    重要

    Nested 型のフィールドは、ソートと集計をサポートしていません。Nested 型のフィールドのサブカラムは、ソートと集計をサポートしています。

  • store: オプション。このパラメータは、フィールドの値を検索インデックスに格納するかどうかを指定します。このパラメータの値は BOOLEAN 型です。

index_setting

検索インデックスの設定。routing_fields パラメータが含まれます。

routing_fields: オプション。このパラメータは、カスタムルーティングフィールドを指定します。複数のプライマリキー列をルーティングフィールドとして指定できます。Tablestore は、指定されたルーティングフィールドに基づいて、検索インデックスに書き込まれたデータを異なるパーティションに分散します。同じルーティングフィールド値を持つデータは、同じパーティションに分散されます。

index_sort

検索インデックスの事前ソート設定。sorters パラメータが含まれます。index_sort パラメータを指定しない場合、フィールド値はプライマリキーでソートされます。

説明

Nested 型のフィールドを含む検索インデックスの事前ソート設定はスキップできます。

sorters: 必須。このパラメータは、検索インデックスの事前ソート方法を指定します。PrimaryKeySort と FieldSort がサポートされています。詳細については、ソートとページングの実行を参照してください。

  • PrimaryKeySort: プライマリキーでデータをソートします。PrimaryKeySort パラメータには、次のパラメータを指定できます。

    order: ソート順。データは昇順または降順でソートできます。デフォルト値: SortOrderConst::SORT_ORDER_ASC。これは、データが昇順でソートされることを指定します。

  • FieldSort: フィールド値でデータをソートします。FieldSort パラメータには、次のパラメータを指定できます。

    インデックスが作成され、enable_sort_and_agg パラメータが true に設定されているフィールドのみを事前ソートできます。

    • field_name: データのソートに使用するフィールドの名前。

    • order: ソート順。データは昇順または降順でソートできます。デフォルト値: SortOrderConst::SORT_ORDER_ASC。これは、データが昇順でソートされることを指定します。

    • mode: フィールドに複数の値が含まれている場合に使用するソート方法。

次のサンプルコードは、検索インデックスを作成する方法を示しています。この例では、検索インデックスは、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 オペレーションを呼び出して、検索インデックスの説明をクエリできます。たとえば、フィールド情報と検索インデックス設定をクエリできます。詳細については、検索インデックスの説明のクエリを参照してください。

  • 不要になった検索インデックスを削除できます。詳細については、検索インデックスの削除を参照してください。