Architected and developed a distributed matching system using Elasticsearch to power large-scale job-candidate matching.
The system ensures scalability, fault tolerance, and high-performance search by distributing indices across multiple nodes in an ES cluster.
Project Overview
- Designed a pipeline for indexing both candidates and jobs into Elasticsearch
- Implemented background jobs to process candidate-to-job & job-to-candidate matches
- Ensured resilience and high availability by distributing shards across cluster nodes
- Optimized queries for fast retrieval of relevant candidates and jobs
System Design
- Separate indices for Jobs and Candidates, replicated across multiple nodes
- Symmetric matching workflows: Candidate → Job & Job → Candidate
- Initial bulk indexing plus incremental updates through background workers
- Visualized architecture highlighting ES cluster, indexing pipeline, and matching flow
Technical Features
- Elasticsearch cluster with sharding and replication
- Symfony for background job orchestration
- Efficient search queries with custom scoring logic
- Scalable and fault-tolerant distributed setup