検索インデックスは、ラストポイントインデックスの取得を高速化し、多次元クエリおよび統計分析機能を提供します。このトピックでは、検索インデックスを使用してラストポイントインデックスを取得する方法について説明します。
背景情報
検索インデックスは、転置インデックスとカラムストアに基づいて、ビッグデータシナリオでの多次元データクエリと統計分析をサポートします。 ラストポイントインデックスのデータに対して、非プライマリキー列に基づくクエリ、ブール値クエリ、あいまい検索、全文検索、k最近傍(KNN)ベクタクエリなどの複雑なクエリを実行する場合、または最大値と最小値の取得、行数の統計情報の収集、データのグループ化など、ラストポイントインデックスのデータを分析する場合は、ラストポイントインデックス用に作成された検索インデックスでこれらの属性をフィールドとして指定し、検索インデックスを使用してラストポイントインデックスのデータをクエリおよび分析できます。
このトピックでは、検索インデックスを使用してラストポイントインデックスを取得するサンプルシナリオを提供します。詳細については、「付録:サンプルシナリオ」をご参照ください。検索インデックスの機能と詳細については、「検索インデックス」をご参照ください。
前提条件
時系列テーブルにラストポイントインデックスが作成されています。詳細については、「ラストポイントインデックスを作成する」をご参照ください。
手順
[時系列テーブルの管理] ページの [ラストポイントインデックス] セクションで、検索インデックスの作成、削除、表示、および検索インデックスを使用したラストポイントインデックスの取得を実行できます。
検索インデックスを作成する
[インスタンス管理] ページに移動します。
Tablestore コンソール にログインします。
上部のナビゲーションバーで、リソースグループとリージョンを選択します。
[概要] ページで、インスタンス名をクリックするか、インスタンスの [アクション] 列の [インスタンスの管理] をクリックします。
[時系列テーブルの管理] ページに移動します。
[インスタンス管理] ページで、[時系列テーブル] タブをクリックします。
[時系列テーブル] タブで、時系列テーブル名をクリックするか、時系列テーブルの [アクション] 列の [データの管理] をクリックします。
ラストポイントインデックスの検索インデックスを作成します。
[基本情報] タブの [ラストポイントインデックス] セクションで、ラストポイントインデックスの [検索インデックス] 列の [検索インデックスの作成] をクリックします。
[検索インデックスの作成] ダイアログボックスで、検索インデックスのパラメータを設定します。
システムによって生成されたデフォルトのインデックス名を保持するか、ビジネス要件に基づいてインデックス名を入力します。
検索インデックスのスキーマを生成するために使用するメソッドを選択します。
重要[フィールド名] パラメータと [フィールドタイプ] パラメータの値は、ラストポイントインデックスのフィールド名とフィールドタイプと一致する必要があります。ラストポイントインデックスと検索インデックスのフィールドタイプのマッピングについては、「データ型」をご参照ください。
[スキーマ生成タイプ] パラメータを [手動] に設定した場合は、フィールド名を手動で入力し、フィールドタイプを選択し、[配列] を有効にするかどうかを指定します。
[スキーマ生成タイプ] パラメータを [自動生成] に設定した場合は、システムはラストポイントインデックスのフィールドをインデックスフィールドとして自動的に使用します。要件に基づいてフィールドタイプを選択し、[配列] を有効にするかどうかを指定できます。
説明仮想カラムを使用すると、テーブルスキーマを変更せずに、テーブルの列を検索インデックスの1つ以上の仮想カラムにマッピングできます。仮想カラムは、クエリを高速化したり、異なるトークン化メソッドを指定したりするために使用できます。仮想カラムの機能と使用方法の詳細については、「仮想カラム」をご参照ください。
検索インデックスの生存時間(TTL)、ルーティングキー、および事前ソート設定を指定する場合は、[詳細設定] をオンにしてパラメータを設定します。次の表にパラメータを示します。
パラメータ
説明
ルーティングキー
カスタムルーティングフィールド。1つ以上のプライマリキー列をルーティングフィールドとして選択できます。ほとんどの場合、指定する必要があるルーティングフィールドは1つだけです。複数のルーティングフィールドを指定すると、システムはルーティングフィールドの値を1つの値に連結してパーティションキーとして使用します。
Tablestore は、ルーティングフィールドの値に基づいてインデックスデータの分散を計算します。ルーティングフィールドの値が同じレコードは、同じデータパーティションに分散されます。
生存時間
検索インデックスのデータの保持期間。単位:秒。デフォルト値は -1 で、データの有効期限が切れないことを指定します。
TTL は 86,400 秒(1 日)以上、または -1 である必要があります。値 -1 は、データの有効期限が切れないことを指定します。
検索インデックスの既存データをシステムによって自動的にクリアする場合は、86400 以上の値を指定します。保持期間が TTL を超えると、Tablestore は期限切れのデータを自動的に削除します。
事前ソート
データが返されるデフォルトの順序。
有効な値:[デフォルト] と [カスタム]。[デフォルト] の値は、データがプライマリキーに基づいてソートされることを指定します。[カスタム] の値は、データが指定したフィールドに基づいてソートされることを指定します。ビジネス要件に基づいて [事前ソート] パラメータを設定します。
重要ネストされたフィールドを含む検索インデックスは、インデックスの事前ソートをサポートしていません。
[OK] をクリックします。
検索インデックスを使用してデータを取得する
[ラストポイントインデックス] セクションの [基本情報] タブで、ラストポイントインデックスの [検索インデックス] 列の [データの管理] をクリックします。
[検索] ダイアログボックスで、データをクエリします。
デフォルトでは、システムはすべての列を返します。特定の属性列を返す場合は、[返す列] パラメータの [すべての列] をオフにし、返す属性列を入力します。複数の属性列はコンマ(,)で区切ります。
説明デフォルトでは、システムはラストポイントインデックスのすべてのプライマリキー列を返します。
ビジネス要件に基づいて、[And]、[Or]、または [Not] 論理演算子を選択します。
[And] を論理演算子として選択すると、システムは指定された条件を満たすデータを返します。[Or] を論理演算子として選択し、単一の条件を設定すると、システムは指定された条件を満たすデータを返します。[Or] を論理演算子として選択し、複数の条件を設定すると、システムは少なくとも1つの条件を満たすデータを返します。[Not] を論理演算子として選択すると、システムは指定された条件を満たさないデータを返します。
インデックスフィールドを選択し、[追加] をクリックし、インデックスフィールドの [クエリタイプ] パラメータと [値] パラメータを設定します。
説明インデックスフィールドの複数の値を指定する場合は、インデックスフィールドを追加するたびに [追加] をクリックし、[値] パラメータを設定して異なる値を指定します。
デフォルトでは、システムはソート機能を無効にしています。返された結果を特定のフィールドに基づいてソートする場合は、[ソート] スイッチをオンにし、データをソートするフィールドを追加し、要件に基づいてソート方法を設定します。
デフォルトでは、システムは統計機能を無効にしています。特定のフィールドの統計情報を収集する場合は、[統計情報の収集] スイッチをオンにし、統計情報を収集するフィールドを追加し、ビジネス要件に基づいて統計情報を設定します。
[はい] をクリックします。
クエリ条件を満たすデータと統計結果は、[基本情報] タブの [ラストポイントインデックス] セクションに表示されます。
検索インデックスを管理する
次の表に、検索インデックスで実行できる操作を示します。
操作 | 説明 |
検索インデックスの詳細を表示する | 検索インデックスの基本情報、計測情報、ルーティングキー、インデックスフィールド、および事前ソートの詳細を表示するには、次の手順を実行します。
|
検索インデックスを削除する | 不要になった検索インデックスは削除できます。
|
開発統合
ラストポイントインデックス用に作成された検索インデックスを使用するには、次のプログラミング言語用の Tablestore SDK を使用できます。
課金
ラストポイントインデックスの作成には料金はかかりません。ラストポイントインデックスのデータのストレージ使用量と、ラストポイントインデックスからデータを読み取る際に課金されます。詳細については、「TimeSeries モデルの課金対象項目」をご参照ください。
検索インデックスを使用してラストポイントインデックスのデータを取得する場合、検索インデックス機能の課金ルールに従って検索インデックス関連の料金が発生します。詳細については、「検索インデックスの課金対象項目」をご参照ください。
FAQ
付録:サンプルシナリオ
Internet of Vehicles(IoV)シナリオでは、センサーが車両の時系列データをクラウドに報告します。ユーザーは、時系列データを保存、クエリ、および分析して、車両ステータスレポート、車両測位、交通管理、車両軌跡の画面ミラーリングなどのビジネス要件を満たすことができます。
次の表に、時系列テーブルのサンプルデータを示します。
この例では、_m_name
、_data_source
、および _tags
フィールドは時系列識別子であり、それぞれ時系列の計測名、データソース、およびタグ情報を指定します。_time
フィールドは、データが報告された時刻を指定します。gps
、speed
、status
、total_mileage
、および remaining_mileage
フィールドは時系列の時系列データであり、それぞれ車両 GPS 座標、車両速度、車両ステータス、車両総走行距離、および車両残走行距離を指定します。
_m_name | _data_source | _tags | _time | gps | speed | status | total_mileage | remaining_mileage |
Platform A | sensor1 | ["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"] | 1730422800000000 | 30.245853,120.178564 | 0 | Idle | 20000 | 450 |
Platform A | sensor1 | ["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"] | 1730423400000000 | 30.245853,120.178564 | 0 | Idle | 20000 | 450 |
Platform A | sensor2 | ["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"] | 1730779200000000 | 30.245278,120.150269 | 50 | Active | 15000 | 300 |
Platform A | sensor2 | ["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"] | 1730779800000000 | 30.245853,120.213654 | 80 | Active | 15050 | 250 |
Platform B | sensor3 | ["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"] | 1730862000000000 | 30.246013,120.124470 | 60 | Active | 18200 | 300 |
Platform B | sensor3 | ["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"] | 1730862600000000 | 30.246022,120.124460 | 0 | Idle | 18230 | 270 |
Tablestore は、時系列テーブルの時系列の最新時点のデータをラストポイントインデックスに自動的に同期します。次の表に、ラストポイントインデックスのサンプルデータを示します。
_#h | _m_name | _data_source | _tags | _time | gps | speed | status | total_mileage | remaining_mileage |
4c#PlatformA#07 | Platform A | sensor1 | ["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"] | 1730423400000000 | 30.245853,120.178564 | 0 | Idle | 20000 | 450 |
25#PlatformA#ae | Platform A | sensor2 | ["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"] | 1730779800000000 | 30.245853,120.213654 | 80 | Active | 15050 | 250 |
b2#PlatformB#4b | Platform B | sensor3 | ["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"] | 1730862600000000 | 30.246022,120.124460 | 0 | Idle | 18230 | 270 |
次のクエリ要件があると仮定すると、ラストポイントインデックスの検索インデックスを作成し、検索インデックス機能をフルに活用してデータをクエリできます。
現在アイドル状態で、残走行距離が 300 km を超える車両をクエリする。
指定されたエリア内の車両をクエリする。
現在アクティブな車両の最高速度をクエリする。
検索インデックスを作成します。
検索インデックスフィールドには、
gps
、speed
、status
、およびremaining_mileage
が含まれ、それぞれ車両 GPS 座標、車両速度、車両ステータス、および車両残走行距離を指定します。検索インデックス機能を使用してデータをクエリします。次の表に、実装方法を示します。
クエリ要件 | 実装方法 |
現在アイドル状態で、残走行距離が 300 km を超える車両をクエリする | 検索インデックスを使用して term クエリと範囲クエリの組み合わせを使用し、 |
指定されたエリア内の車両をクエリする | 検索インデックスを使用してジオクエリを使用し、 |
現在アクティブな車両の最高速度をクエリする | 検索インデックスを使用して一致検索と集約を使用し、 |