オープンソースクライアントを使用して SearchIndex を使用する場合は、ワイドテーブルのデータをインデックステーブルに同期します。ワイドテーブルのデータをインデックステーブルに同期するには、ワイドテーブルとインデックステーブルの間に列マッピングを作成します。ワイドテーブルとインデックステーブルの間の列をマッピングするために使用するファイルで構成項目を指定した後、テーブル間の列マッピング関係を管理できます。たとえば、列マッピングの作成、クエリ、追加、または削除ができます。このトピックでは、列マッピング関係の管理方法について説明します。
前提条件
Java Development Kit(JDK)1.8 以降がインストールされていること。
オープンソースクライアントが SearchIndex に接続されており、ワイドテーブルとインデックステーブルの間の列をマッピングするために使用するファイル内の構成項目が指定されていること。詳細については、オープンソースクライアントを使用して SearchIndex に接続して使用する方法をご参照ください。
列マッピングの作成
ワイドテーブルとインデックステーブルの間に列マッピングを作成するには、次のコマンドを実行します。
alter_external_index 'testTable', 'schema.json'このコマンドでは、testTable はワイドテーブルの名前、schema.json はワイドテーブルとインデックステーブルの間の列をマッピングするために使用される構成ファイルの名前です。
列マッピング関係の変更
ワイドテーブルとインデックステーブルの間の列マッピング関係を変更する場合は、schema.json 構成ファイルを変更し、テーブル間のマッピング関係を再作成できます。
alter_external_index 'testTable', 'new_schema.json'new_schema.json は、列のマッピングに使用される変更済み構成ファイルの名前です。
列マッピングのクエリ
ワイドテーブルとインデックステーブルの間の列マッピングを表示するには、次のコマンドを実行します。
describe_external_index 'testTable'列マッピングの追加
既存のマッピング関係に 1 つ以上の列マッピングを追加する場合は、次のコマンドを実行します。
add_external_index_field 'testTable', {FAMILY => 'f', QUALIFIER => 'money', TARGETFIELD => 'money_f', TYPE => 'FLOAT' }alter_external_index コマンドを実行した後にのみ、上記のコマンドを実行して列マッピングを追加できます。多数の列マッピングを追加する場合は、alter_external_index コマンドを実行することをお勧めします。
列マッピングの削除
1 つ以上の列マッピングを削除する場合は、次のコマンドを実行します。
remove_external_index 'testTable', 'f:name', 'f:age'すべての列マッピングの削除
フィールド
schema.jsonに入力したデータを ファイルから削除します。{ "sourceNamespace": "default", "sourceTable": "testTable", "targetIndexName": "democollection", "indexType": "ES", "rowkeyFormatterType": "STRING", "fields": [] }列マッピング関係を変更するには、次のコマンドを実行します。
alter_external_index 'testTable', 'del_schema.json'説明del_schema.jsonファイルは、データを削除した後に作成される列マッピング構成ファイルです。
参考資料
Java API 操作を使用して列マッピングを管理する場合は、Java API 操作を呼び出して LindormTable に接続します。詳細については、ApsaraDB for HBase API for Java を使用してアプリケーションを開発するをご参照ください。
インデックス管理に対応する API 操作は、AliHBaseUETable クラスにあります。次のサンプルコードは例を示しています。
AliHBaseUETable table = (AliHBaseUETable)connection.getTable(TableName.valueOf("testTable"));
void addExternalIndex(ExternalIndexConfig config, List<ExternalIndexField> fields) throws IOException; // 外部インデックスを追加します
void removeExternalIndex(List<String> fields) throws IOException; // 外部インデックスを削除します