クエリの結合
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に設定されている場合、結合クエリは実行されません。