このトピックでは、データテーブルの検索インデックスを作成し、検索インデックスを使用して、非プライマリキー列に基づくクエリやブールクエリなどのクエリを Tablestore コンソールで実行する方法について説明します。
前提条件
Max Versions パラメーターが 1 に設定されているデータテーブルが作成されています。データテーブルの Time to Live パラメーターは、次のいずれかの条件を満たしている必要があります。詳細については、「データテーブルの操作」をご参照ください。
データテーブルの Time to Live(TTL)が -1 に設定されています。これは、データテーブル内のデータが期限切れにならないことを指定します。
データテーブルの TTL が -1 以外の値に設定されており、データテーブルの更新操作が禁止されています。
使用上の注意
検索インデックス内のフィールドのデータ型は、検索インデックスが作成されるデータテーブル内のフィールドのデータ型と一致している必要があります。詳細については、「基本データ型のマッピング」をご参照ください。
検索インデックスの TTL を -1 以外の値に設定する場合は、検索インデックスが作成されるデータテーブルで UpdateRow 操作が禁止されていることを確認してください。データテーブルに対して作成された検索インデックスの TTL は、データテーブルの TTL 以下である必要があります。詳細については、「検索インデックスの TTL を指定する」をご参照ください。
手順 1:検索インデックスを作成する
検索インデックスを作成して、データクエリの速度を向上させることができます。クエリを実行するフィールドを検索インデックスに追加する必要があります。ビジネス要件に基づいて、Routing Key、Time to Live、Pre-sorting などの詳細設定を構成できます。
[インデックス] タブに移動します。インデックス
Tablestore コンソール にログインします。
上部のナビゲーションバーで、リソースグループとリージョンを選択します。
[概要] ページで、管理するインスタンスの名前をクリックするか、インスタンスの [アクション] 列の [インスタンスの管理] をクリックします。概要インスタンスの管理アクション
[インスタンスの詳細] タブの [テーブル] タブで、検索インデックスを作成するデータテーブルの名前をクリックするか、データテーブルの [アクション] 列の [インデックス] をクリックします。テーブルインスタンスの詳細インデックス
[インデックス] タブで、[検索インデックスの作成] をクリックします。インデックス検索インデックスの作成
[インデックスの作成] ダイアログボックスで、検索インデックスのパラメーターを構成します。インデックスの作成
システムによって生成されたデフォルトのインデックス名を保持するか、ビジネス要件に基づいてインデックス名を入力します。
検索インデックスのスキーマを生成するために使用するメソッドを選択します。
重要[フィールド名] パラメーターと [フィールドタイプ] パラメーターの値は、データテーブル内のこれらのパラメーターの値と一致する必要があります。データテーブルのフィールドタイプと検索インデックスのフィールドタイプのマッピングについては、基本データ型のマッピング をご参照ください。
Text フィールドで特定の条件を満たすコンテンツを強調表示するには、Text フィールドの強調表示機能を有効にします。詳細については、「強調表示」をご参照ください。
[スキーマ生成タイプ] パラメーターを [手動] に設定する場合は、フィールドの名前とタイプを指定します。ビジネス要件に基づいて、各フィールドの配列をオンにするかどうかを指定します。スキーマ生成タイプ手動
[スキーマ生成タイプ] パラメーターを [自動生成] に設定すると、システムはデータテーブルのプライマリキー列と属性列をインデックスフィールドとして自動的に使用します。ビジネス要件に基づいて、フィールドタイプを選択し、配列をオンにするかどうかを指定できます。スキーマ生成タイプ自動生成
説明特定のケースでインデックス作成のパフォーマンスを最適化するには、仮想列を使用します。詳細については、「仮想列」をご参照ください。
Routing Key、Time to Live、Pre-sorting などの詳細設定を構成する場合は、[詳細設定] をオンにします。次の表にパラメーターを示します。[詳細設定]
パラメーター
説明
Routing Key
カスタムルーティングフィールド。1 つ以上のプライマリキー列をルーティングフィールドとして選択できます。Tablestore は、ルーティングフィールドの値に基づいてインデックスデータの分散を計算します。ルーティングフィールドの値が同じレコードは、同じデータパーティションに分散されます。
Time to Live
検索インデックス内のデータの保持期間。単位:秒。デフォルト値は -1 で、データが期限切れにならないことを指定します。
TTL は 86,400 秒(1 日)以上または -1 である必要があります。値 -1 は、データが期限切れにならないことを指定します。データテーブルに対して作成された検索インデックスの TTL は、データテーブルの TTL 以下である必要があります。
システムが検索インデックスの履歴データを自動的にクリアするようにするには、86400 以上の値を指定します。保持期間がこのパラメーターの値を超えると、データは期限切れになり、Tablestore は期限切れのデータを自動的に削除します。
事前ソート
データが返されるデフォルトの順序。
有効な値:デフォルトとカスタム。値「デフォルト」は、データがプライマリキーに基づいてソートされることを指定します。値「カスタム」は、データが指定したフィールドに基づいてソートされることを指定します。ビジネス要件に基づいて、事前ソートパラメーターを構成します。
重要ネストされたフィールドを含む検索インデックスは、インデックスの事前ソートをサポートしていません。
[OK] をクリックします。[OK]
検索インデックスを作成した後、[インデックス] タブの検索インデックスの [アクション] 列にある [インデックスの詳細] をクリックします。[インデックスの詳細] ダイアログボックスで、[基本インデックス情報]、[インデックスメーター]、[Routing Key]、[インデックスフィールド]、[事前ソート] セクションのパラメーター設定を表示できます。インデックスの詳細アクション
手順 2:データのクエリを実行する
検索インデックスを使用してデータのクエリを実行する場合、ビジネス要件に基づいてクエリタイプを選択できます。返す列と、返されるデータのソート方法を構成できます。
検索インデックスは、タームクエリ、範囲クエリ、プレフィックスクエリ、一致クエリ、ワイルドカードクエリ、一致フレーズクエリ、存在クエリ、タームクエリ、ブールクエリ、地理クエリ、ネストクエリをサポートしています。地理クエリは地理フィールドでのみ使用でき、ネストクエリはネストされたフィールドでのみ使用できます。
[インデックス] タブに移動します。インデックス
Tablestore コンソール にログインします。
上部のナビゲーションバーで、リソースグループとリージョンを選択します。
[概要] ページで、管理するインスタンスの名前をクリックするか、インスタンスの [アクション] 列の [インスタンスの管理] をクリックします。概要インスタンスの管理アクション
[インスタンスの詳細] タブの [テーブル] タブで、検索インデックスを作成するデータテーブルの名前をクリックするか、データテーブルの [アクション] 列の [インデックス] をクリックします。テーブルインスタンスの詳細インデックス
[インデックス] タブで、データのクエリを実行するために使用する検索インデックスを見つけ、[アクション] 列の [データの管理] をクリックします。インデックスデータを管理アクション
[検索] ダイアログボックスで、クエリ条件を指定します。検索
デフォルトでは、システムはすべての属性列を返します。特定の属性列を返すには、[すべての列] をオフにして、返す属性列を指定します。複数の属性列はコンマ(,)で区切ります。すべての列
説明デフォルトでは、システムはデータテーブルのすべてのプライマリキー列を返します。
インデックスフィールドを選択し、[追加] をクリックして、インデックスフィールドをクエリ条件として追加します。インデックスフィールドのクエリタイプと値を指定します。ビジネス要件に基づいて、この手順を繰り返してクエリ条件を追加します。追加
クエリタイプ
説明
このクエリは、完全一致を使用してデータテーブルからデータを取得します。タームクエリは、文字列一致に基づくクエリに似ています。フィールドのタイプが Text の場合、Tablestore はフィールド値をトークン化し、指定された値と完全に一致するトークンを見つけます。
このクエリは、指定された範囲内のデータをデータテーブルから取得します。フィールドのタイプが Text の場合、Tablestore はフィールド値をトークン化し、指定された範囲内にあるトークンを見つけます。
このクエリは、指定されたプレフィックスを含むデータをデータテーブルから取得します。フィールドのタイプが Text の場合、Tablestore はフィールド値をトークン化し、指定されたプレフィックスを含むトークンを見つけます。
このクエリは、指定されたサフィックスを含むデータをデータテーブルから取得します。
このクエリは、あいまい一致に基づいてデータテーブルからデータを取得します。フィールドのタイプが Text の場合、Tablestore はフィールド値とクエリ文字列を指定されたトークン化メソッドを使用してトークン化し、あいまい一致に基づいてトークンを照合します。
このクエリでは、一致させる文字列にワイルドカード文字を指定できます。
アスタリスク(*)と疑問符(?)のワイルドカード文字がサポートされています。アスタリスク(*)は任意の長さの文字列と一致し、疑問符(?)は単一の文字と一致します。一致させる文字列は、アスタリスク(*)または疑問符(?)で始めることができます。
このクエリは一致クエリに似ていますが、一致フレーズクエリはトークンの位置を評価するという点が異なります。行は、行内のトークンの順序と位置が指定された順序と位置と一致する場合にのみ、クエリ条件を満たします。
クエリ対象の列に使用されるトークン化メソッドがあいまいトークン化の場合、一致フレーズクエリはワイルドカードクエリよりも高速な応答を提供します。
存在クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリは、スパースデータで使用され、行の列が存在するかどうかを判断します。たとえば、住所列の値が空でない行をクエリできます。
列の値が空かどうかを確認するには、exists クエリを NOT 演算子と共に使用します。
このクエリはタームクエリに似ています。タームクエリは複数のクエリ文字列をサポートしています。クエリ文字列の少なくとも 1 つがフィールド値と一致する場合、データの行が返されます。タームクエリは、SQL ステートメントの IN 演算子に相当します。
このクエリは、サブクエリの組み合わせに基づいてデータテーブルからデータを取得します。Tablestore は、サブクエリに一致する行を返します。
各サブクエリは任意のタイプにすることができます。
ビジネス要件に基づいて、AND、OR、または NOT 演算子を選択できます。
地理クエリ
地理クエリには、地理距離クエリ、地理境界ボックスクエリ、地理ポリゴンクエリが含まれます。地理クエリは地理フィールドでのみ使用できます。
地理距離クエリ:このクエリでは、中心点と半径で定義された円形の地理的領域をクエリ条件として指定できます。Tablestore は、指定されたフィールドの値が円形の地理的領域内にある行を返します。
地理境界ボックスクエリ:このクエリでは、矩形の地理的領域をクエリ条件として指定できます。Tablestore は、指定されたフィールドの値が矩形の地理的領域内にある行を返します。
地理ポリゴンクエリ:このクエリでは、ポリゴンの地理的領域をクエリ条件として指定できます。Tablestore は、指定されたフィールドの値がポリゴンの地理的領域内にある行を返します。
このクエリは、ネストされたフィールドの子行からデータを取得します。ネストクエリはネストされたフィールドでのみ使用できます。
ネストされたフィールドをクエリするには、サブフィールドを選択し、サブフィールドのクエリタイプと値を指定する必要があります。
このクエリは、ベクターに基づいて近似最近傍検索を実行します。KNN ベクタークエリは、ベクターフィールドでのみ使用できます。
ベクターフィールドをクエリするには、クエリするベクターと topK 値を指定する必要があります。
デフォルトでは、並べ替え機能は無効になっています。並べ替えを有効にするには、[並べ替え] (Sort) をオンにし、クエリ結果の並べ替え基準となるインデックスフィールドを追加し、並べ替え方法を指定します。
[OK] をクリックします。OK
クエリ条件を満たすデータが、[インデックス] タブに指定された順序で表示されます。インデックス
付録:検索インデックスの管理
次の表に、検索インデックスで実行できる操作を示します。
操作 | 説明 |
検索インデックスの詳細を表示する | 検索インデックスの基本インデックス情報、インデックスメーター、ルーティングキー、インデックスフィールド、および事前ソートの詳細を表示するには、次の手順を実行します。
|
検索インデックスのスキーマを変更する | 検索インデックスのインデックスフィールドを追加、更新、または削除する場合は、検索インデックスのスキーマを動的に変更できます。詳細については、「検索インデックスのスキーマを動的に変更する」をご参照ください。 |
検索インデックスの TTL を変更する | システムが検索インデックスの履歴データを自動的にクリアするか、検索インデックスのデータの保持期間を延長する場合は、検索インデックスの TTL を変更できます。検索インデックスの TTL を変更するには、次の手順を実行します。
|
検索インデックスを削除する | データクエリの高速化に検索インデックスが不要になった場合は、検索インデックスを削除できます。 重要 削除された検索インデックスは復元できません。削除された検索インデックスを使用する場合は、検索インデックスを再作成します。検索インデックスを削除するには、次の手順を実行します。
|
FAQ
関連情報
Tablestore CLI と Tablestore SDK を使用して検索インデックスを使用できます。詳細については、「Tablestore CLI の使用」および「Tablestore SDK の使用」をご参照ください。
データテーブルのストレージスキーマとデータを変更せずに新しいフィールドまたは新しいフィールドタイプのデータをクエリする場合は、仮想列機能を使用します。詳細については、「仮想列」をご参照ください。