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

OpenSearch:複数テーブルでのJOIN操作

最終更新日:Apr 02, 2026

OpenSearch コンソールは、アプリケーションスキーマを定義するための4つのメソッドを提供します。OpenSearch Industry Algorithm Edition はマルチテーブルスキーマをサポートしており、プライマリテーブルと最大10個のセカンダリテーブルにわたる複雑なデータリレーションシップをモデル化できます。インデックス作成中、OpenSearch はこれらのテーブルに対して LEFT JOIN を実行し、検索インデックスが構築されるワイドテーブルを生成します。

仕組み

インデックス作成時、OpenSearch はプライマリテーブルとすべての関連付けられたセカンダリテーブルに対して LEFT JOIN を実行します。その結果、プライマリテーブルの行数と一致するワイドテーブルが生成されます。これは、プライマリレコードごとに1つの検索ドキュメントとなります。一致しないレコードを持つセカンダリテーブルフィールドには、デフォルト値が入力されます。INTフィールドには 0、STRINGフィールドには null が設定されます。

インデックスは、このワイドテーブルから構築され、すべての検索クエリに対応します。

image

関連付けルール

マルチテーブルスキーマを設計する際は、以下のルールに従ってください。

  • アプリケーションごとに1つのプライマリテーブル。 プライマリテーブルにできるのは1つのテーブルのみです。

  • N:1 または 1:1 のレコード比率のみ。 各プライマリテーブルレコードは、最大で1つのセカンダリテーブルレコードにマップされます。単一のプライマリレコードを複数のセカンダリレコードにマップすることはできません (1:N はサポートされていません)。

  • キーベースの関連付け。 セカンダリテーブルは、プライマリテーブル内の外部キーと一致する必要があるプライマリキーを介してプライマリテーブルに結合されます。プライマリテーブルの外部キーは、セカンダリテーブルのプライマリキーのみを参照できます。

  • 同じフィールドタイプが必要。 フィールドは、同じタイプを共有している場合にのみテーブル間でマップできます。たとえば、セカンダリテーブルの INT プライマリキーは、プライマリテーブルの INT フィールドにのみマップできます。

  • 最大2つの関連付けレベル (標準アプリケーションの場合)。排他的アプリケーションは最大3つのレベルをサポートします。

  • アプリケーションごとに最大10個のセカンダリテーブル。 排他的アプリケーションはこの制限を超えることができます。

サポートされている関連付けパターン

パターン関連付けサポート
プライマリ + 1 セカンダリプライマリ → セカンダリはい
プライマリ + 2 セカンダリ (チェーン)プライマリ → B → Cはい
プライマリ + 複数セカンダリ (ファンアウト)プライマリ → B、プライマリ → C、プライマリ → D (2レベル以下、10テーブル以下)はい
プライマリ + 3レベルチェーンプライマリ → B → C → D (2レベル超)いいえ (排他的アプリケーションの場合のみ最大3レベル)
循環関連付けプライマリ → B、B → プライマリいいえ
プライマリ + 10を超えるセカンダリ10を超えるセカンダリテーブルいいえ (排他的アプリケーションの場合を除く)

imageimageimage

使用制限と運用上の注意点

Nが大きい場合の更新遅延

プライマリとセカンダリのレコード比率が N:1 で N が大きい場合、単一のセカンダリレコードを更新すると、プライマリテーブルインデックスに対して N 回の更新がトリガーされます。これにより、両方のテーブルで更新遅延が発生する可能性があります。このリスクを最小限に抑えるには、N を10以下に保ってください。

一致しないフィールドのデフォルト値

LEFT JOIN 後、一致するプライマリレコードがないセカンダリテーブルフィールドには、ワイドテーブルにデフォルト値が入力されます。

フィールドタイプデフォルト値
INT0
STRINGnull

次のステップ