On Which Data Model It Operates
The most important requirement for executing a join is to have a common shared attribute between two indices. For example, let’s take a simple relational data model composed of two tables, Articles
and Companies
, and of one junction table ArticlesMentionCompanies
to encode the many-to-many relationships between them.
This model can be mapped to two Elasticsearch indices, Articles
and Companies
. An article document will have a multi-valued field mentions
with the unique identifiers of the companies mentioned in the article. In other words, the field mentions
is a foreign key in the Articles
table that refers to the primary key of the Companies
table.
It should be straightforward for someone to write an SQL statement to flatten and map relationships into a single multi-valued field. We can see that, compared to a traditional database model where a junction table is necessary, the model is simplified by leveraging multi-valued fields.