← All reportsPublic report

meilisearch/meilisearch

A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.

59k stars Rust View on GitHubprofiled 14d ago
Try GitZoid
142PRs this week
9Contributors
0Deps scanned
0Issues found
01 · Repo overview

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

Rust

Frameworks

actix-webactix-corstokioserdetracing

Datastores

LMDB (via heed)file-based update file store

Infrastructure

Docker (Dockerfile)S3-compatible object storage export (rusty_s3)Prometheus/Grafana assets (assets/prometheus-basic-scraper.yml, assets/grafana-dashboard.json)GitHub merge queues

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.

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.

03 · Security check

Dependencies and code review

0 dependencies scanned

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