Lindorm は、ワイドテーブルの検索インデックスをサポートしています。 検索インデックスを作成し、マッピングを設定すると、ワイドテーブルに書き込まれたデータは LindormSearch に自動的に同期されます。 Elasticsearch API を呼び出してクエリを実行できます。 このトピックでは、Lindorm-cli を使用して検索インデックスを管理し、構造化データに対してリアルタイムクエリを実行する方法について説明します。
前提条件
Lindorm インスタンスで LindormTable がアクティブ化されています。
Lindorm インスタンスで 検索インデックス機能 が有効になっています。
説明この検索インデックス機能は、LindormSearch と Lindorm Tunnel Service(LTS)に依存しています。この機能を有効にするには、LindormSearch と LTS もアクティブ化する必要があります。
Lindorm-cli がインストールされています。
Lindorm Shell がインストールされています。
Java 開発キット(JDK) V1.8 以降がインストールされています。
クライアント IP アドレスが Lindorm ホワイトリストに追加されています。
HBase API を使用して ワイドテーブルが作成されています。 このトピックでは、ワイドテーブル名は
testTable
で、カラムファミリー名はf1
です。
手順 1:ワイドテーブル列のデータ型をマッピングする
Lindorm-cli を使用してワイドテーブル列のデータ型をマッピングし、ワイドテーブルに書き込まれたデータが正しい形式で解析され、検索インデックスに同期されるようにします。この例では、ワイドテーブルの
Rowkey
列とf1:name
列がHSTRING
型としてマッピングされています。ALTER TABLE testTable MAP DYNAMIC COLUMN`ROW` HSTRING, f1:name HSTRING;
詳細については、「データ型マッピング」をご参照ください。
説明ワイドテーブルに格納されている Rowkey (上記のコードの
ROW
フィールド) を LindormSearch に格納されているプライマリキー ID と一致させるには、インデックスを作成する前に Rowkey のデータ型をHSTRING
としてマップする必要があります。行
ワイドテーブルに格納されているプライマリキー ID と一致する、上記のコードにあるフィールドがワイドテーブルに格納されています。、Rowkey データの型をHSTRING
インデックスを作成する前に。そうしないと、ワイドテーブルの Rowkey は、HEX エンコード形式で検索インデックステーブルのプライマリキーにマッピングされます。詳細については、「」をご参照ください。は、検索インデックステーブルのプライマリキーに 16 進エンコード形式でマッピングされます。詳細については、「rowkeyFormatterType のパラメーター記述。
手順 2:検索インデックスを作成する
Lindorm-cli で idx
という名前の検索インデックスを作成します。
CREATE INDEX idx USING SEARCH ON testTable (f1:name);
デフォルトでは、生データは検索インデックスに格納されません。検索インデックステーブルのインデックス列の生データに直接アクセスするには、インデックスを作成するときに SOURCE_SETTINGS
属性を指定します。
CREATE INDEX idx USING SEARCH ON testTable(f1:name) WITH (SOURCE_SETTINGS='
{
"enabled": true
}
');
作成された検索インデックスが
ACTIVE
になると、ワイドテーブルに書き込まれたデータはリアルタイムでインデックステーブルに自動的に同期されます。インデックスステータスの表示方法については、「SHOW INDEX」をご参照ください。ワイドテーブルの既存データを同期するには、ALTER INDEX
文を実行してインデックスを再構築する必要があります。例:ALTER INDEX idx ON testTable REBUILD;
。ここで、idx
はワイドテーブル検索インデックスのインデックス名を示します。Lindorm-cli から切断するには、
exit
、quit
、またはctrl+d
コマンドを実行します。その他の Lindorm-cli コマンドについては、「Lindorm-cli で使用される一般的なコマンド」をご参照ください。
手順 3:ワイドテーブルにデータを書き込む
呼び出す テーブルにデータレコードを挿入する Lindorm Shell で、HBase API を呼び出して、
testTable
。 テーブルにデータレコードを挿入します。put 'testTable', 'row1', 'f1:name', 'foo'
手順 4:検索インデックスを使用してデータをクエリする
インデックスデータをクエリします。
LindormSearch GUI にログオンします。 Elasticsearch API を呼び出してインデックスデータをクエリし、検索インデックステーブルのプライマリキー ID を取得します。
説明LindormSearch インデックステーブルの名前は、
<名前空間名>.<テーブル名>.<インデックス名>
の形式で連結されます。検索インデックステーブルの列名は、次のルールに基づいて連結されます。
ワイドテーブルのカラムファミリーが
f
の場合、ワイドテーブルとインデックステーブルの列名は同じです。たとえば、f:name
はname
に対応します。ワイドテーブルのカラムファミリーが
f
でない場合、インデックステーブルの列名は<カラムファミリー名>_<列名>
の形式になります。たとえば、f1:name
はf1_name
に対応します。
GET /default.testTable.idx/_search { "size": 10, "query": { "match": { "f1_name": "foo" } } }
次の結果が返されます。
{ "took": 8, "timed_out": false, "_shards": { "total": 4, "successful": 4, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.2876821, "hits": [ { "_index": "default.testTable.idx", "_id": "row1", "_score": 0.2876821, "_source": { "_searchindex_id": "row1", "update_version_l": 1745389294641, "f1_name": "foo" } } ] } }
結果から検索インデックステーブルのプライマリキー ID(
_id
)を取得します。Lindorm Shell で次のコマンドを実行して、ワイドテーブルデータをクエリします。
get 'testTable','row1'
次の結果が返されます。
COLUMN CELL f1:name timestamp=1745389294641, value=foo 1 row(s)