meilisearch/meilisearch
A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.
How meilisearch is put together
Meilisearch is a RESTful search engine written in Rust, organized as a large Cargo workspace of ~22 crates. HTTP traffic is served by an actix-web server (crates/meilisearch) whose requests are authenticated by the meilisearch-auth crate (API keys) and dispatched as asynchronous tasks into the index-scheduler, which persists task/batch queues in LMDB (via heed) and applies them to per-index milli search-engine databases. Supporting crates handle dumps (tar/gz archives), update-file storage (file-store), type/error definitions (meilisearch-types), parsing (filter-parser), and observability (tracing-trace, metrics). Data flows: client request -> actix route -> auth check -> task enqueue -> scheduler batch processing -> milli index writes -> search queries read directly from milli indexes.
Languages
Frameworks
Datastores
Infrastructure
Major components
crates/meilisearch
The actix-web HTTP server binary: routing, middleware, CLI options, metrics, and the search queue.
crates/index-scheduler
Asynchronous task/batch scheduler persisting enqueued tasks, batches, and index metadata in LMDB, including dump import and dynamic search rules.
crates/milli
The core search engine library implementing indexing, ranking criteria, filters, facets, vector/hybrid search, and per-index databases.
crates/meilisearch-auth
API key management and authentication store backed by its own LMDB environment.
crates/meilisearch-types
Shared types across the workspace: settings, keys, tasks/batches views, errors, features, network topology, and index UID validation.
crates/dump
Reading/writing instance dumps (tar+gzip archives of keys, indexes, settings, tasks).
crates/file-store
Durable on-disk store for uploaded update files keyed by UUID.
crates/filter-parser
Parser for user-supplied filter expressions used in search, deletion-by-filter, and document edition.
A quiet release week focused on shipping v1.53.0 and a quick v1.53.1 patch with a small configuration addition.
5 weeksWeek of 2026-08-10
Week of 2026-08-10latest
A quiet release week focused on shipping v1.53.0 and a quick v1.53.1 patch with a small configuration addition.
Week of 2026-08-03
Work continued on sharded foreign filters and per-index stats, while an HTTP worker configuration feature was reverted after landing.
Week of 2026-07-27
The busiest week, dominated by the sharded foreign-filters feature plus new streaming routes for tasks and batches.
Week of 2026-07-20
Big performance push on search requests and internal field maps, alongside the v1.51.0 release and cleanup of unused experimental features.
Week of 2026-07-06
Early groundwork on the DSR (dynamic search rules?) system, adding filter conditions and value bounds evaluation.
Over the past five weeks the Meilisearch team shipped two releases (v1.52.0 and v1.53.0/1.53.1) while building out a major new capability around sharded search and 'foreign filters' that lets one index filter results using data from another. Alongside that they added experimental streaming routes for tasks and batches, exposed per-index database size in stats, and did a lot of performance work speeding up search requests and cutting down redundant internal work.
Week by week
2026-08-10A quiet release week focused on shipping v1.53.0 and a quick v1.53.1 patch with a small configuration addition.latest4 changes
Chore
Released v1.53.0
Version numbers were bumped to prepare and publish the v1.53.0 release.
Feature
Configurable task queue readers
A new environment variable lets operators change how many processes can read from the task queue at once.
Chore
Updated the built-in mini-dashboard
The bundled web dashboard was upgraded to version 0.4.2 as part of the release.
Chore
Released v1.53.1
A follow-up patch release was cut shortly after, including the new task queue reader setting.
2026-08-03Work continued on sharded foreign filters and per-index stats, while an HTTP worker configuration feature was reverted after landing.6 changes
Fix
Reverted HTTP worker count config
A recently merged option for setting the number of HTTP server workers was pulled back out of the codebase.
Feature
Per-index database size in stats
The stats API now reports each index's database size and how much of it is actually used.
Refactor
Sharded foreign filters progress
The cross-index filtering feature was refined so network and partition objects are created only once and remote errors come back properly in responses.
Fix
Safer benchmark runs
Benchmark workflows now check out the exact validated commit instead of a branch name, and reject runs if new commits were pushed after the request.
Fix
Security fixes in CI workflows
Several GitHub Actions workflow files were hardened against potential security issues.
Chore
Dependency updates
Automated bumps were applied to build tooling and library dependencies.
2026-07-27The busiest week, dominated by the sharded foreign-filters feature plus new streaming routes for tasks and batches.6 changes
Feature
Sharded foreign filters
Cross-index filtering now works across sharded instances, including a preprocessing phase, hydration support, and combined filter logic.
Feature
Tasks and batches streaming routes
New experimental server-sent-event routes stream task and batch updates live, gated behind a CLI/environment flag.
Refactor
Skip unchanged settings on import
When importing dumps or applying updates, settings that haven't changed are skipped entirely to save time.
Fix
Better filter error messages
Filter errors now identify which index failed, parse filters before opening indexes, and give clearer messages when features aren't enabled.
Chore
Breaking change to foreign keys settings
The foreignPrimaryKey field is now required in foreignKeys settings, removing an earlier breaking-change workaround by adding document IDs to federation hits.
Chore
Released v1.52.0
Version numbers were bumped to prepare the v1.52.0 release.
2026-07-20Big performance push on search requests and internal field maps, alongside the v1.51.0 release and cleanup of unused experimental features.6 changes
Refactor
Faster search requests
The number of times an internal fields map gets deserialized during searches was drastically reduced, with timing logs added to track loading speed.
Fix
Fixed filterable attributes for rule conditions
All subfields used in rule condition filters are now automatically marked as filterable.
Chore
Released v1.51.0
Version numbers were bumped to prepare the v1.51.0 release.
Refactor
Removed unused experimental features
Dead options like auto_upgrade and task cleanup parameters were stripped out, while the max-reader experiment was kept.
Fix
Legacy attribute patterns fixed
Old-style attribute pattern matching was made to work correctly again after recent changes.
Docs
Documented supported versions policy
Documentation was added explaining which versions receive security fixes.
2026-07-06Early groundwork on the DSR (dynamic search rules?) system, adding filter conditions and value bounds evaluation.4 changes
Feature
New DSR index settings
A new settings structure for DSR was introduced into the index configuration.
Feature
Filters evaluated via value bounds
A new value_bounds module lets filter conditions be evaluated using precomputed value ranges.
Refactor
DSR payloads extended
DSR payload types gained a filter condition field and a nbConstraints pseudo-field describing constraint counts.
Refactor
Filter passed through DSR context
The DSR context was updated to carry the active filter, and facet value removal was adjusted accordingly.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required