このトピックでは、オンライン複数テーブル結合をサポートするアプリケーションを構築する方法について説明します。
前提条件
Alibaba Cloudアカウントが作成され、本人確認が完了していること。
新しいAlibaba Cloudアカウントを使用して初めてOpenSearchコンソールにログオンする前に、AccessKeyペアが作成されていること。
Alibaba Cloudアカウント内でAccessKeyペアを指定する必要があります。 AccessKeyペアは、OpenSearchアプリケーションを作成および使用するために必要です。
Alibaba Cloudアカウント内でAccessKeyペアを作成した後、RAMユーザーのAccessKeyペアを作成できます。 これにより、RAMユーザーとしてアプリケーションにアクセスできます。 RAMユーザーに権限を付与する方法の詳細については、アクセス認証ルールを参照してください。
手順
オンライン複数テーブル結合をサポートするアプリケーションを構築するには、次の手順を実行します。
アプリケーションインスタンスを購入して作成します。
アプリケーションインスタンスを構成します。 アプリケーションスキーマとインデックススキーマを定義し、データソースを構成する必要があります。
検索テストを実行します。
アプリケーションインスタンスを購入して作成する
OpenSearchコンソールにログオンします。 左上隅で、OpenSearchエディションが表示されている場所にポインターを移動し、OpenSearch高性能検索エディションを選択します。 左側のナビゲーションペインで、[インスタンス管理]をクリックします。 表示されるページで、[インスタンスの作成]をクリックします。
購入ページで、[商品エディション]、[製品タイプ]、[リージョンとゾーン]、[アプリケーション名]、[クラスタ設定]、[ストレージ容量]、および[コンピューティングリソース]パラメータを構成します。 次に、[今すぐ購入]をクリックします。
商品エディション:高性能検索エディションを選択します。
製品タイプ:サブスクリプションまたは従量課金を選択します。
リージョンとゾーン:ビジネス要件に基づいてリージョンとゾーンを選択します。
アプリケーション名:カスタム名を入力します。
クラスタ設定:専用クラスタ - ストレージ最適化を選択します。
ストレージ容量とコンピューティングリソース:デフォルト値を使用するか、ビジネス要件に基づいてパラメータを構成します。
注文を確認し、利用規約のチェックボックスを選択して、[支払う]をクリックします。
アプリケーションインスタンスが購入された後、OpenSearchコンソールの[インスタンス管理]ページでアプリケーションインスタンスを表示します。 インスタンスは[保留中]状態です。
アプリケーションインスタンスを構成する
OpenSearchコンソールの[インスタンス管理]ページで、構成するインスタンスを見つけ、[アクション]列の[構成]をクリックします。
アプリケーションスキーマを定義します。 アプリケーションスキーマは、次のいずれかの方法で定義できます。
テンプレートを使用してアプリケーションスキーマを定義する。 作成したアプリケーションスキーマをテンプレートとして保存できます。 次に、テンプレートを使用して新しいアプリケーションスキーマを定義できます。
データファイルを使用してアプリケーションスキーマを定義する。 データファイルをOpenSearchコンソールにアップロードできます。 次に、OpenSearchはアップロードされたデータファイルを解析し、初期アプリケーションスキーマを生成します。 データファイルはJSON形式である必要があります。 初期アプリケーションスキーマが生成された後、フィールドタイプなどの特定の属性を構成する必要があります。
データソースを使用してアプリケーションスキーマを定義する。 ApsaraDB RDSやMaxComputeデータソースなどのデータソースからデータを同期する場合、この方法を使用できます。 ソーステーブルのスキーマを使用して、初期アプリケーションスキーマを生成できます。 これにより、手動定義の作業負荷が軽減され、エラーの可能性が減少します。 詳細については、データソースを参照してください。
手動でアプリケーションスキーマを定義する。 この方法を使用してクイックテストを実行できます。 この例では、2つのテーブルが追加され、アプリケーションスキーマが手動で定義されています。
フィールドのデータ型の選択方法の詳細については、OpenSearch高性能検索エディションのアプリケーションスキーマを参照してください。
最大8つのテーブルを追加できます。
各テーブルに個別にインデックススキーマを定義します。
インデックスフィールドの指定方法の詳細については、インデックススキーマを参照してください。
分析方法の指定方法の詳細については、テキストアナライザーを参照してください。
SELECT、WHERE、またはORDER BY句でフィールドを使用する必要がある場合は、フィールドを属性フィールドとして指定します。
FLOAT、FLOAT_ARRAY、DOUBLE、またはDOUBLE_ARRAYタイプのフィールドをインデックスフィールドとして指定することはできません。
TEXTまたはSHORT_TEXTタイプのフィールドを属性フィールドとして指定することはできません。
ルーティングフィールドを指定します。
OpenSearchアプリケーションインスタンスは、分散バックエンドストレージを使用します。 複数テーブル結合シナリオでは、結合されるデータは同じサーバー上にある必要があります。 次の図は、その仕組みを示しています。
エンジンがインデックスを構築するとき、エンジンは指定されたルーティングフィールドに基づいてレコードのハッシュ値を計算します。 同じハッシュ値を持つレコードは同じ列にルーティングされます。 各列のデータは、クエリ結果検索機(QRS)ノードによって送信されたSQLステートメントに基づいて結合され、データは列間で結合されません。 次に、各列は結合結果をQRSノードに返します。 最後に、QRSノードは再現率の結果を集計し、集計された結果をユーザーに返します。
デフォルトでは、主キーフィールドがルーティングフィールドとして使用されます。
ルーティングフィールドとして設定できるフィールドは1つだけです。
ルーティングフィールドの値はグローバルに一意である必要があります。
ルーティングフィールドは、INTまたはLITERALタイプにすることができます。
主キー以外のフィールドに基づいてテーブルを結合する必要がある場合は、そのフィールドをルーティングフィールドとして指定する必要があります。
テーブルのデータソースを構成します。 OpenSearch高性能検索エディションでサポートされているデータソースタイプに基づいてデータソースを構成できます。
[データソースの追加]をクリックして、データソースを構成します。
[完了]をクリックします。
インスタンスの詳細ページで、[オフラインアプリケーション]タブでインスタンスのステータスを確認し、アプリケーションのステータスが[正常]に変わるまで待ちます。
検索テストを実行する
オフラインアプリケーションが[正常]状態になり、オンラインになったら、[検索テスト]ページで検索テストを実行できます。
オンライン複数テーブル結合のアプリケーションは、SQLクエリのみをサポートします。
SQL構文の詳細については、SQL機能を参照してください。
使用上の注意
クラスタ設定が専用クラスタ - ストレージ最適化であるインスタンスのみが、オンライン複数テーブル結合をサポートします。
JOIN操作が複数のテーブルで実行される複数テーブル結合シナリオでは、SQLクエリのみがサポートされます。
複数テーブル結合シナリオでは、カスタムアナライザーはサポートされていません。
複数テーブル結合シナリオでは、並べ替え構成はサポートされていません。
複数テーブル結合シナリオでは、検索結果の表示はサポートされていません。
クラスタ設定が専用クラスタ - ストレージ最適化であるインスタンスは、他の仕様に変更することはできません。