Lastpoint インデックスに多次元インデックスを追加すると、最新の時系列データに対して多次元フィルター、ジオクエリ、集約などのクエリを実行できます。これらのクエリは、Lastpoint インデックス単体では実行できません。
なぜ Lastpoint インデックスで検索インデックスを使用するのか
Lastpoint インデックスには、各時系列の最新データポイントのみが格納されます。たとえば、車両インターネット (IoV) シナリオでは、Lastpoint インデックスには車両ごとに 1 行のデータ(最新の GPS 座標、速度、ステータス、走行距離)が含まれます。
次の表は、車両フリートの Lastpoint インデックスのサンプルデータを示しています。
|
_#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 |
多次元インデックスがない場合、プライマリキー (_#h) でのみ行を取得できます。「残り走行距離が 300 km を超えており、現在アイドル状態の車両はどれか」といった質問に答えるには、すべての行をスキャンし、アプリケーション層でフィルター処理を行う必要があります。この方法は、大規模なデータでは遅く、コストがかかります。
Lastpoint インデックス上に構築された多次元インデックスは、転置インデックスおよび列のストアをサポートしており、以下の機能を実現します。
プライマリキー以外によるクエリ — 車両ステータスや残り走行距離など、任意の属性列でフィルター処理可能
ブール値、あいまい、全文検索クエリ — AND、OR、NOT 演算子を使用して条件を組み合わせ可能
ジオクエリ — 地理的エリア内のレコードを検索可能
k 最近傍 (KNN) ベクトルクエリ — ベクトルフィールドに対する類似検索が可能
-
集約 — 最新データポイント全体で最大値、最小値、件数、グループ別統計などを計算可能
説明このトピックでは、検索インデックスを使用して Lastpoint インデックスを取得するサンプルシナリオを提供します。詳細については、「付録: サンプルシナリオ」をご参照ください。検索インデックスの機能について詳しく知りたい場合は、「検索インデックス」をご参照ください。
前提条件
作業を開始する前に、以下の条件を満たしていることを確認してください。
時系列テーブルに対して Lastpoint インデックスが作成されていること。詳細については、「LastPoint インデックスの作成」をご参照ください。
多次元インデックスの管理とデータのクエリ
[時系列テーブルの管理] ページの [LastPoint インデックス] セクションで、検索インデックスを管理し、データのクエリを実行します。
検索インデックスの作成
-
インスタンス管理 ページに移動します。
Tablestore コンソール にログインします。
上部のナビゲーションバーで、リソースグループとリージョンを選択します。
概要 ページで、インスタンス名をクリックするか、操作 列の インスタンスの管理 をクリックします。
-
時系列テーブルの管理 ページに移動します。
インスタンス管理 ページで、時系列テーブル タブをクリックします。
時系列テーブル タブで、時系列テーブル名をクリックするか、操作 列の データの管理 をクリックします。
-
Lastpoint インデックスの検索インデックスを作成します。
[LastPoint インデックス] セクションの [基本情報] タブで、Lastpoint インデックスの [検索インデックス] 列にある [検索インデックスの作成] をクリックします。
-
「[検索インデックスの作成]」ダイアログボックスで、検索インデックスのパラメーターを設定します。

デフォルトのインデックス名をそのまま使用するか、必要に応じて名前を入力します。
-
スキーマ生成方法を選択します。
重要フィールド名 および フィールドタイプ は、Lastpoint インデックス内のフィールド名およびタイプと一致している必要があります。Lastpoint インデックスと多次元インデックスのフィールドタイプの対応関係については、「データタイプ」をご参照ください。
スキーマ生成タイプ を 手動 に設定した場合、フィールド名を入力し、フィールドタイプを選択して、配列 を有効にするかどうかを指定します。
スキーマ生成タイプ を 自動生成 に設定した場合、システムは Lastpoint インデックスのフィールドをインデックスフィールドとして使用します。必要に応じてフィールドタイプを選択し、配列 を有効にするかどうかを指定します。
説明仮想カラムを使用すると、テーブルスキーマを変更せずにテーブルのカラムを多次元インデックス内の 1 つ以上の仮想カラムにマッピングできます。仮想カラムを使用して、クエリを高速化したり、異なる形態素解析方法を適用したりできます。詳細については、「仮想カラム」をご参照ください。
-
生存時間 (TTL)、ルートキー、事前ソートの設定を構成するには、詳細設定 をオンにします。次の表にパラメーターの説明を示します。
パラメーター
説明
ルートキー
データ分布を制御するために使用されるルートフィールドです。1 つ以上のプライマリキーカラムを選択します。同じルートフィールド値を持つレコードは、同じデータパーティションに配置されます。通常、1 つのルートフィールドで十分です。複数のフィールドを指定する場合、その値は連結されてパーティションキーが形成されます。
生存時間
多次元インデックス内のデータの保存期間です。単位:秒。デフォルト値:-1(データは期限切れになりません)。
TTL は、86,400 秒(1 日)以上または -1 である必要があります。Tablestore は、TTL を超過したデータを自動的に削除します。
事前ソート
返されるデータのデフォルトのソート順です。有効値:デフォルト(プライマリキーでソート)および カスタム(指定したフィールドでソート)。
重要Nested フィールドを含む多次元インデックスは、事前ソートをサポートしていません。
OK をクリックします。
多次元インデックスを使用したデータのクエリ
基本情報 タブの LastPoint インデックス セクションで、Lastpoint インデックスの 多次元インデックス 列にある データの管理 をクリックします。
-
検索 ダイアログボックスで、データをクエリします。
-
デフォルトでは、システムはすべてのカラムを返します。特定の属性列を返すには、返却カラム パラメーターの すべてのカラム をオフにして、必要な属性列を入力します。複数のカラムを指定する場合は、カンマ (,) で区切ります。
説明Lastpoint インデックスのすべてのプライマリキーカラムは常に返されます。
-
論理演算子を選択します:And、Or、または Not。
[And] は、すべての条件を満たす行を返します。[Or] は単一の条件の場合、その条件を満たす行を返します。複数の条件の場合、[Or] はいずれかの条件を満たす行を返します。[Not] は、指定された条件を満たさない行を返します。
-
インデックスフィールドを選択し、追加 をクリックして、クエリタイプ および 値 パラメーターを設定します。
説明フィールドに複数の値を指定するには、同じフィールドに対して再度 追加 をクリックし、別の 値 を設定します。
デフォルトではソートは無効になっています。結果を特定のフィールドでソートするには、ソート をオンにして、ソートフィールドを追加し、ソート順を設定します。
デフォルトでは統計情報の収集は無効になっています。フィールドの統計情報を収集するには、統計情報の収集 をオンにして、フィールドを追加し、統計設定を構成します。
-
はい をクリックします。
クエリ結果および統計情報は、基本情報 タブの LastPoint インデックス セクションに表示されます。
-
検索インデックスの管理
次の表では、検索インデックスに対して実行できる操作について説明します。
|
操作 |
説明 |
|
検索インデックスの詳細を表示 |
検索インデックスの基本情報、課金情報、ルーティングキー、インデックスフィールド、事前ソートの詳細を表示するには、次の手順を実行します。
|
|
検索インデックスの削除 |
検索インデックスが不要になった場合は、削除してください。
|
SDK 統合
次の Tablestore SDK を使用して、Lastpoint インデックス上の多次元インデックスを操作できます。
課金
Lastpoint インデックスの作成は無料です。Lastpoint インデックスデータのストレージおよび読み取り操作には課金されます。詳細については、「TimeSeries モデルの課金項目」をご参照ください。
検索インデックスを介して Lastpoint インデックスをクエリ実行すると、検索インデックスの料金が発生します。詳細については、「検索インデックスの課金対象項目」をご参照ください。
よくある質問
付録:サンプルシナリオ
車両インターネット (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 は、各時系列の最新データポイントを自動的に Lastpoint インデックスに同期します。その結果得られる Lastpoint インデックスのデータは、前のセクションの表に示されています。
次のクエリ要件に基づき、Lastpoint インデックス上に多次元インデックスを作成し、その完全なクエリ機能を利用します。
現在アイドル状態で、残り走行距離が 300 km を超える車両を検索する。
指定された地理的エリア内の車両を検索する。
現在アクティブな車両の中で、最大速度を検索する。
次のフィールドを持つ多次元インデックスを作成します:
gps、speed、status、およびremaining_mileage。多次元インデックスを使用してデータをクエリします。次の表は、各要件とその実装方法の対応関係を示しています。
|
クエリ要件 |
実装方法 |
|
現在アイドル状態で、残り走行距離が 300 km を超える車両を検索する |
|
|
指定された地理的エリア内の車両を検索する |
|
|
現在アクティブな車両の中で、最大速度を検索する |
|