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

Lindorm:Lindorm-cli を使用して検索インデックスを管理する

最終更新日:Jun 11, 2025

Lindorm は、ワイドテーブルの検索インデックスをサポートしています。 検索インデックスを作成し、マッピングを設定すると、ワイドテーブルに書き込まれたデータは LindormSearch に自動的に同期されます。 Elasticsearch API を呼び出してクエリを実行できます。 このトピックでは、Lindorm-cli を使用して検索インデックスを管理し、構造化データに対してリアルタイムクエリを実行する方法について説明します。

前提条件

  • Lindorm インスタンスで LindormTable がアクティブ化されています。

  • Lindorm インスタンスで 検索インデックス機能 が有効になっています。

    説明

    この検索インデックス機能は、LindormSearch と Lindorm Tunnel Service(LTS)に依存しています。この機能を有効にするには、LindormSearchLTS もアクティブ化する必要があります。

  • Lindorm-cli がインストールされています。

  • Lindorm Shell がインストールされています。

  • Java 開発キット(JDK) V1.8 以降がインストールされています。

  • クライアント IP アドレスが Lindorm ホワイトリストに追加されています。

  • HBase API を使用して ワイドテーブルが作成されています このトピックでは、ワイドテーブル名は testTable で、カラムファミリー名は f1 です。

手順 1:ワイドテーブル列のデータ型をマッピングする

  1. 手順 2:LindormTable に接続する

  2. 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 から切断するには、exitquit、または ctrl+d コマンドを実行します。その他の Lindorm-cli コマンドについては、「Lindorm-cli で使用される一般的なコマンド」をご参照ください。

手順 3:ワイドテーブルにデータを書き込む

  1. Lindorm Shell を使用して LindormTable に接続します。

  2. 呼び出す テーブルにデータレコードを挿入する Lindorm Shell で、HBase API を呼び出して、testTable テーブルにデータレコードを挿入します。

    put 'testTable', 'row1', 'f1:name', 'foo'

手順 4:検索インデックスを使用してデータをクエリする

  1. インデックスデータをクエリします。

    LindormSearch GUI にログオンします。 Elasticsearch API を呼び出してインデックスデータをクエリし、検索インデックステーブルのプライマリキー ID を取得します。

    説明
    • LindormSearch インデックステーブルの名前は、<名前空間名>.<テーブル名>.<インデックス名> の形式で連結されます。

    • 検索インデックステーブルの列名は、次のルールに基づいて連結されます。

      • ワイドテーブルのカラムファミリーが f の場合、ワイドテーブルとインデックステーブルの列名は同じです。たとえば、f:namename に対応します。

      • ワイドテーブルのカラムファミリーが f でない場合、インデックステーブルの列名は <カラムファミリー名>_<列名> の形式になります。たとえば、f1:namef1_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)を取得します。

  2. Lindorm Shell で次のコマンドを実行して、ワイドテーブルデータをクエリします。

    get 'testTable','row1'

    次の結果が返されます。

    COLUMN                                                     CELL                                                                                                                                                                      
     f1:name                                                   timestamp=1745389294641, value=foo                                                                                                                                        
    1 row(s)