Creating ATS (candidate tracking system) with Algolia

Hello community, I built a system like an ATS (candidate tracking system) for academic purposes, I’ve already considered several options for full text search like (ElasticSearch / Solr / Typesense), but Algolia is what seemed ideal.

I started reading Algolia documentation and now I can create indexes with the Java API Client and some basic operations with React InstantSearch.

My question is if Algolia is very good for object relationship (OneToMany) and if I should keep all the data in Algolia indexes instead of using a relational database.

below, I describe the problem in more detail.

For my example, we can consider two entities like Candidate (which can contain objects like profile, skills, education and experience) and Job (createdBy).

  1. Several candidates can apply for a job. This results in the creation of one more index (job_candidate) to make the relationship between them.

  2. for Algolia, what is the best way is to create relationships, should I consider creating an index (job_candidate) as attributes just the job and candidate IDs?

  3. What is the best approach to use to filter candidates for a specific job (eg senior Java developer)?

  4. Do I do this filter on the client (React) or server (Java) side?

  5. If you want to filter a job based on candidate attributes, such as skills and education, which index to use to filter on, since in the index (job_candidate) there is only information about IDs?

  6. Remembering that the user (admin) should only see the jobs that he created, that’s why I added the field createdBy in the job index

  7. is it possible to make filters like sql join direct from the code using React InstantSearch to retrieve related data at the same hit ?

  8. Could you recommend me more resources to study about algolia and solve my specific problem?

  9. below is the ideal setting for me.

Thanks and sorry for the long text and if it looked inconsistent.