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

Tablestore:検索インデックスのマッピングテーブルを作成する

最終更新日:Dec 28, 2024

CREATE TABLE ステートメントを実行して、既存のテーブルまたは検索インデックスのマッピングテーブルを作成できます。マッピングテーブルを作成する場合は、フィールド名、フィールドタイプ、および主キーを指定し、マッピングテーブルを使用してデータを照会するときに使用されるエンジンを設定する必要があります。このトピックでは、既存の検索インデックスのマッピングテーブルを作成する方法について説明します。

説明

既存のテーブルのマッピングテーブルを作成する方法の詳細については、テーブルのマッピングテーブルを作成するを参照してください。

背景情報

CREATE TABLE ステートメントを実行してデータテーブルのマッピングテーブルを作成すると、データテーブルに対して異なるタイプのインデックスが作成される場合があります。マッピングテーブルを使用してデータを照会すると、SQL エンジンはビジネス要件に合わせて、データテーブルの主キー、セカンダリインデックス、または検索インデックスを自動的に選択します。SQL で CREATE TABLE ステートメントを実行して、指定された検索インデックスのマッピングテーブルを作成し、指定された検索インデックスを選択してクエリを実行できるようにすることができます。

構文

CREATE TABLE [IF NOT EXISTS] user_defined_name(column_name data_type [,column_name data_type])
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name": index_name, "table_name": table_name}';

パラメーター

パラメーター

必須

説明

IF NOT EXISTS

いいえ

成功レスポンスが返されるかどうかを指定します。IF NOT EXISTS を指定すると、テーブルが存在するかどうかに関係なく、成功レスポンスが返されます。それ以外の場合は、テーブルが存在しない場合にのみ成功レスポンスが返されます。

user_defined_name

はい

検索インデックスのマッピングテーブルの名前。この名前は、SQL でマッピングテーブルを識別するために使用されます。

この名前は SQL 操作に使用されます。

column_name

はい

属性列の名前。

SQL の列名は、Tablestore テーブルの列名と同じである必要があります。たとえば、Tablestore テーブルの列名が Aa の場合、SQL の列名は Aa、AA、aA、または aa である必要があります。

data_type

はい

列のデータ型 (BIGINT、DOUBLE、BOOL など)。

SQL の列のデータ型は、Tablestore テーブルの列のデータ型と一致する必要があります。データ型マッピングの詳細については、データ型マッピングを参照してください。

ENGINE

はい

マッピングテーブルを使用してデータを照会するときに使用される実行エンジン。デフォルト値: tablestore。有効な値:

  • tablestore: SQL エンジンは、クエリを実行するのに適したインデックスを自動的に選択します。

  • searchindex: SQL エンジンは、指定された検索インデックスを使用してクエリを実行します。ENGINE パラメーターを searchindex に設定する場合は、ENGINE_ATTRIBUTE パラメーターで index_name および table_name 項目を設定する必要があります。

ENGINE_ATTRIBUTE

はい

実行エンジンの属性。このパラメーターの値は JSON 形式で、次の項目が含まれます。

  • index_name: マッピングテーブルが作成される検索インデックスの名前。検索インデックスのマッピングテーブルを作成する場合にのみ、この項目を指定する必要があります。

  • table_name: 検索インデックスが作成されるデータテーブルの名前。検索インデックスのマッピングテーブルを作成する場合にのみ、この項目を指定する必要があります。

  • consistency: 実行エンジンでサポートされている整合性モード。

    • テーブルのマッピングテーブルを作成する場合の有効な値:

      • eventual: クエリ結果は結果整合性モードになります。これはデフォルト値です。データがテーブルに書き込まれてから数秒後にデータを照会できます。

      • strong: クエリ結果は厳密な整合性モードになります。データがテーブルに書き込まれた直後にデータを照会できます。

    • 検索インデックスのマッピングテーブルを作成する場合、consistency の値は eventual であり、変更できません。

  • allow_inaccurate_aggregation: 集計操作の精度を損なうことによってクエリのパフォーマンスを向上させることができるかどうかを指定します。タイプ: ブール値。

    • テーブルのマッピングテーブルを作成する場合、allow_inaccurate_aggregation のデフォルト値は true です。これは、集計操作の精度を損なうことによってクエリのパフォーマンスを向上させることができることを示します。ビジネス要件に基づいて、allow_inaccurate_aggregation を false に設定できます。

    • 検索インデックスのマッピングテーブルを作成する場合、allow_inaccurate_aggregation の値は true であり、変更できません。

exampletable1 データテーブルに対して作成された exampletable1_index 検索インデックスに対して、search_exampletable1 という名前のマッピングテーブルを作成します。マッピングテーブルには、id、colvalue、および content 列が含まれます。id 列は BIGINT 型で、colvalue 列と content 列は MEDIUMTEXT 型です。

CREATE TABLE search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

search_exampletable1 マッピングテーブルを作成した後、次の操作を実行できます。

  • テーブルに関するインデックス情報を照会する

    search_exampletable1 マッピングテーブルに関するインデックス情報を照会します。

    SHOW INDEX IN search_exampletable1;

    テーブルに関するインデックス情報を照会する方法の詳細については、テーブルのインデックス情報を照会するを参照してください。

  • 指定された文字列に一致するデータを照会する

    search_exampletable1 マッピングテーブルを使用して、content 列の値が「tablestore cool」文字列をトークン化して取得したトークンの少なくとも 1 つに一致する行を照会します。最大 10 行が返され、クエリ条件を満たす各行で id 列と content 列が返されるように指定します。

    SELECT id,content FROM search_exampletable1 WHERE TEXT_MATCH(content, "tablestore cool") LIMIT 10;

    指定された文字列に一致するデータを照会する方法の詳細については、データの照会および全文検索を参照してください。

FAQ

SQL クエリの一般的なエラーをトラブルシューティングするにはどうすればよいですか?

関連情報

  • 検索インデックスのマッピングテーブルを作成した後、SELECT ステートメントを実行してテーブル内のデータの照会と分析を行うことができます。詳細については、データの照会検索インデックスの配列型検索インデックスでサポートされている NESTED全文検索、および検索インデックスの仮想列を参照してください。

  • データテーブルの属性列が変更された場合は、マッピングテーブルの属性列を変更する前に、検索インデックスの属性列を変更する必要があります。

    1. ビジネス要件に基づいて、検索インデックスの属性列を変更する方法を選択します。

    2. ビジネス要件に基づいて、マッピングテーブルの属性列を変更する方法を選択します。

      • ALTER TABLE ステートメントを実行して、マッピングテーブルの属性列を変更します。詳細については、マッピングテーブルの属性列を更新するを参照してください。

      • マッピングテーブルを削除し、マッピングテーブルを再作成します。

  • テーブルの説明を照会する場合は、DESCRIBE ステートメントを実行できます。詳細については、テーブルに関する情報を照会するを参照してください。

  • マッピングテーブルが不要になった場合は、DROP MAPPING TABLE ステートメントを実行してマッピングテーブルを削除できます。詳細については、マッピングテーブルを削除するを参照してください。

  • テーブルに関するインデックス情報を表示する場合は、SHOW INDEX ステートメントを実行できます。詳細については、テーブルのインデックス情報を照会するを参照してください。

  • 現在のデータベース内のマッピングテーブルの名前を一覧表示する場合は、SHOW TABLES ステートメントを実行できます。詳細については、テーブル名を一覧表示するを参照してください。