アプリケーションスキーマ
Industry Algorithm Edition のインスタンスにアップロードするデータは、最初にオフラインデータテーブルに保存されます。データのアップロードを容易にするために、Industry Algorithm Edition では、ビジネス要件に基づいて複数のデータテーブルを作成し、データ処理プラグインを提供できます。複数のデータテーブルを作成する場合は、テーブルに関連付けられているフィールドを指定する必要があります。複数のデータテーブルのデータが処理された後、テーブルが結合されてインデックステーブルが形成されます。インデックステーブルは検索属性を定義し、検索エンジンがインデックスを構築してデータを検索するために使用できます。
データテーブルのフィールド
データテーブルを使用して、OpenSearch にデータをインポートできます。各データ処理プラグインは、特定の種類のフィールドのみを処理できます。フィールド値の制限の詳細については、「制限」トピックの「フィールドの制限」セクションをご参照ください。フィールド値が指定された値の範囲内にない場合、オーバーフローエラーが発生するか、値が切り捨てられます。正しいフィールドタイプを選択する必要があります。
フィールドタイプ | 説明 |
INT | 64 ビット整数。 |
INT_ARRAY | 64 ビット整数配列。 |
FLOAT | 浮動小数点数。 |
FLOAT_ARRAY | 浮動小数点数配列。 |
DOUBLE | 浮動小数点数。 |
DOUBLE_ARRAY | 浮動小数点数配列。 |
LITERAL | 文字列定数。文字列定数は、完全一致のみをサポートします。 |
LITERAL_ARRAY | 文字列定数配列。文字列定数配列の単一の要素は、完全一致のみをサポートします。 |
SHORT_TEXT | 短いテキスト。このタイプの値は、長さが 100 バイトを超えることはできません。このタイプのフィールドは、複数の分析方法をサポートしています。 |
TEXT | 長いテキスト。このタイプのフィールドは、複数の分析方法をサポートしています。 |
TIMESTAMP | 64 ビット符号なし整数。このタイプのフィールドは、タイムスタンプを示します。 |
GEO_POINT | 文字列定数。このタイプのフィールドは、「緯度値 経度値」形式の緯度と経度のペアを示します。 |
予約済みフィールドの使用上の注意:
次のフィールド名は予約済みであるため、フィールド名を指定する際に使用できません: 'service_id'、'ops_app_name'、'inter_timestamp'、'index_name'、'pk'、'ops_version'、'ha_reserved_timestamp'、および 'summary'。
配列タイプのフィールドの使用上の注意:
アプリケーションで配列タイプのフィールドを作成した後、そのフィールドをデータソースの VARCHAR などの STRING タイプのフィールドにマッピングできます。さらに、データ処理プラグインを使用してフィールドを処理することもできます。詳細については、「データ処理プラグインを使用する」をご参照ください。
OpenSearch Industry Algorithm Edition API または SDK を使用して配列タイプのフィールドをアップロードする場合は、フィールドを文字列ではなく配列としてアップロードします。例: String[] literal_array = {"Alibaba Cloud","OpenSearch"};
タイムスタンプタイプのフィールドの使用上の注意:
INT タイプと TIMESTAMP タイプのフィールドは、データソースの DATETIME タイプまたは TIMESTAMP タイプのフィールドにマッピングできます。フィールド値は、ミリ秒数に自動的に変換されます。範囲関数を使用して、時間範囲で検索結果を取得できます。詳細については、「範囲による検索」をご参照ください。
サポートされているデータソースのフィールドタイプ
データソース | サポートされているフィールドタイプ |
RDS | TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT、REAL、DOUBLE、NUMERIC、DECIMAL、TIME、DATE、TIMESTAMP、VARCHAR |
PolarDB | TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT、REAL、DOUBLE、NUMERIC、DECIMAL、TIME、DATE、TIMESTAMP、VARCHAR |
MaxCompute | BIGINT、DOUBLE、BOOLEAN、DATETIME、STRING、DECIMAL、MAP、ARRAY、TINYINT、SMALLINT、INT、FLOAT、CHAR、VARCHAR、DATE、TIMESTAMP、BINARY、INTERVAL_DAY_TIME、INTERVAL_YEAR_MONTH、STRUCT |
Industry Algorithm Edition のテーブルのフィールドタイプとデータベースのテーブルのフィールドタイプのマッピングIndustry Algorithm Edition のテーブルのフィールドタイプとデータベースのテーブルのフィールドタイプ間のマッピング
Industry Algorithm Edition のテーブル | RDS テーブル | PolarDB テーブル | MaxCompute テーブル |
INT | BIGINT、TINYINT、SMALLINT、INTEGER | BIGINT、TINYINT、SMALLINT、INTEGER | BIGINT、TINYINT、SMALLINT、INT |
INT_ARRAY | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter によって変換される必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 |
FLOAT | FLOAT、NUMERIC、DECIMAL | FLOAT、NUMERIC、DECIMAL | FLOAT、DECIMAL |
FLOAT_ARRAY | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter によって変換される必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 |
DOUBLE | DOUBLE、NUMERIC、DECIMAL | DOUBLE、NUMERIC、DECIMAL | DOUBLE、DECIMAL |
DOUBLE_ARRAY | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter によって変換される必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 |
LITERAL | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ |
LITERAL_ARRAY | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter によって変換される必要があります。 | VARCHAR などの STRING タイプ。このフィールドタイプは、データ処理プラグイン MultiValueSpliter を使用して変換する必要があります。 |
SHORT_TEXT | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ |
TEXT | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ |
TIMESTAMP | DATETIME または TIMESTAMP | DATETIME または TIMESTAMP | DATETIME または TIMESTAMP |
GEO_POINT | VARCHAR などの STRING タイプ | VARCHAR などの STRING タイプ | 「経度 緯度」形式の VARCHAR などの STRING タイプ。経度は経度を示し、緯度は緯度を示します。経度と緯度の値はどちらも DOUBLE タイプで、スペースで区切る必要があります。経度パラメータの範囲: [-180, 180]、緯度パラメータの範囲: [-90,90]。 |
注:
データソースのフィールドが FLOAT タイプまたは DOUBLE タイプの場合、フィールドタイプを DECIMAL に変更することをお勧めします。そうしないと、精度が低下する可能性があります。
アプリケーションスキーマを作成する
Industry Algorithm Edition では、アプリケーションスキーマ、つまり Industry Algorithm Edition のテーブルスキーマを作成するために、次の方法を提供しています。
ApsaraDB RDS for MySQL、MaxCompute、または PolarDB データソースからテーブルスキーマをインポートして、アプリケーションスキーマを作成します。
アプリケーションスキーマを手動で作成します。詳細については、複数のテーブルを結合するをご参照ください。
複数のテーブルを結合する
このセクションでは、複数のテーブルを結合してアプリケーションスキーマを手動で作成する方法について説明します。この例では、プライマリテーブル main とセカンダリテーブル test_tb_1 が関連付けられています。
OpenSearch コンソールにログインし、目的のアプリケーションインスタンスを見つけ、[アクション] 列の [構成] をクリックします。

表示されるページで、メインテーブルをプライマリテーブルとして指定し、フィールドをプライマリキーとして指定します。

セカンダリテーブルのプライマリキーとしてフィールドを指定します。

プライマリテーブルの [外部テーブル] 列で、セカンダリテーブルを選択して、プライマリテーブルとセカンダリテーブルを結合します。

Industry Algorithm Edition でサポートされているプライマリテーブルとセカンダリテーブルの関連付けの詳細については、「複数のテーブルに対する JOIN 操作」をご参照ください。
外部キーフィールドは、INT タイプまたは LITERAL タイプである必要があります。
プライマリテーブルを 1 つ以上のセカンダリテーブルに結合する場合、結合操作に使用されるフィールドは、プライマリテーブルとセカンダリテーブルで同じタイプである必要があります。たとえば、プライマリテーブルの結合操作に使用されるフィールドが INT タイプの場合、セカンダリテーブルの結合操作に使用されるフィールドも INT タイプである必要があります。プライマリテーブルの結合操作に使用されるフィールドが LITERAL タイプの場合、セカンダリテーブルの結合操作に使用されるフィールドも LITERAL タイプである必要があります。
セカンダリテーブルをプライマリテーブルに結合する場合、セカンダリテーブルのプライマリキーを使用してテーブルを結合する必要があります。