クエリの結合

Elasticsearchのような分散システムで完全なSQLスタイルの結合を行うことは非常に高コストです。代わりに、Elasticsearchは水平スケーリングを目的とした2つの結合形式を提供します。

  • nested クエリ
  • ドキュメントには、nested 型のフィールドが含まれている場合があります。これらのフィールドは、各オブジェクトが独立したドキュメントとしてクエリ可能なオブジェクトの配列をインデックスするために使用されます(nested クエリを使用)。
  • has_child および has_parent クエリ
  • 単一のインデックス内のドキュメント間にjoin フィールド関係が存在する可能性があります。has_child クエリは、子ドキュメントが指定されたクエリに一致する親ドキュメントを返し、has_parent クエリは、親ドキュメントが指定されたクエリに一致する子ドキュメントを返します。

また、[terms]クエリのterms-lookupメカニズムも参照してください。これにより、別のドキュメントに含まれる値からterms クエリを構築できます。

ノート

高コストのクエリを許可する

search.allow_expensive_queriesがfalseに設定されている場合、結合クエリは実行されません。