Skip to content
Rate this page
Thanks for your feedback
Thank you! The feedback has been submitted.

Get free database assistance or contact our experts for personalized support.

Percona Search for MongoDB architecture

Percona Search for MongoDB extends Percona Server for MongoDB with integrated full-text and vector search capabilities. Search indexes are maintained by mongot, while application data remains stored in mongod.

Applications continue to connect to MongoDB in the same way they do for other database operations. Search requests are routed internally to mongot, and the matching documents are returned through mongod.

Architecture components

Component Description
Application Connects to mongod in a replica set or to mongos in a sharded cluster. Applications never connect directly to mongot.
mongod Stores application data, coordinates search requests, and retrieves matching documents from the collection.
mongos Routes search requests to the appropriate shards and merges the results before returning them to the client. Available only in sharded clusters.
mongot Builds and maintains Lucene-based search indexes and executes full-text and vector search queries.
Search indexes Stored separately from the data files managed by mongod and maintained automatically by mongot.
Embedding model Generates embeddings for semantic search. Applications are responsible for generating embeddings in the current release.

Component interaction in a sharded cluster

In a replica set, mongod forwards a $search, $searchMeta, or $vectorSearch stage to mongot and assembles the final result, as described in Search overview. Sharded clusters work the same way at each shard, with mongos handling the extra step of combining results across shards.

Each shard runs its own mongot, which indexes only the data on that shard. When a query reaches mongos, it forwards the search stage to every shard, and each shard’s mongod and mongot execute the search locally. mongos then merges the results from all shards into a single response before returning it to the application.

If you add a search index to a collection that’s already sharded, or add a new shard to a collection that already has a search index, you may see incomplete search results for that shard until its mongot finishes an initial sync.