
Meilisearch
www.meilisearch.com- Category
- Developer Tools
- Rank
- No. 284Tools index
- Pricing
- Freemium
- Type
- TOOL
- Builder
- meilisearch
- GitHub
- 59.3k stars
- Latest release
- v1.53.2
- Date
About
Open-source instant search. Fast, typo-tolerant search engine written in Rust. Self-host or use Meilisearch Cloud. Built-in semantic search via embedders.
What it does
Meilisearch is a search server you run yourself: one Rust binary that listens over HTTP and keeps documents in an embedded key-value store on local disk, so there is no separate database service to operate. You push JSON documents into named indexes. Writes become asynchronous tasks you poll for completion, while queries run against memory-mapped structures under a default time budget of 1500 milliseconds. The same engine covers typo-tolerant word matching, filters, facets, geographic sorting and vector similarity, and every search request passes through a bounded queue sized from the machine's core count.
Why it's ranked here
The engineering here is serious. Production mode refuses to boot without a master key of a minimum length, API keys are scoped to index patterns with expiry dates, and tenant tokens intersect with those keys so the more restrictive rule wins. Upgrades get their own declarative test format that starts an older released binary, replays commands, then swaps the binary in place against the same database to prove it still reads. Two things keep this from being a clean recommendation: part of the server is licensed under Business Source License 1.1 rather than MIT, and personalized reranking calls an outside vendor.
What's good
Defaults lean strict where it counts. Outbound requests deny local IP ranges unless you list exceptions, so server-side request forgery takes a deliberate opt-in. Search carries an abort timer and a queue whose depth you set, which stops a traffic spike from becoming unbounded work. The upgrade tests chain real binaries against one long-lived database rather than fresh temporary ones, the failure mode most projects never cover. Reranking retries up to ten times but returns the original ordering once the deadline passes, so personalization degrades quietly instead of failing the query.
Tradeoffs
Cross-origin handling is wide open by default: any origin, any header, any method, with a 24 hour preflight cache. That is fine behind a proxy and risky if you expose the port directly. Anonymous telemetry is on unless you pass the flag that turns it off. Windows gets a lower default limit on simultaneously open indexes and refuses one indexing memory option outright. Many behaviours sit behind experimental flags and environment variables, so two deployments can differ in ways the API surface does not advertise.
How to use it well
Reach for this when database full text search stops giving good relevance and running a search cluster is more operations than you want. It fits behind your own API: your service owns the source of truth, pushes documents in, and hands out scoped keys per tenant. Poll the task queue rather than assuming a write is immediately visible. It does not crawl or ingest for you, it is not a general document store or an analytics engine, and the bundled dashboard only runs in development mode, so a customer-facing search interface is still yours to build.
Technical notes+
Cargo.toml declares one workspace of 23 member crates, splitting the HTTP layer (crates/meilisearch/src/lib.rs) from the indexing and query core (crates/milli/src/lib.rs), which re-exports heed, arroy, hannoy, cellulite, charabia and rhai and caps LMDB keys at 500 bytes with a default search Deadline of 1500ms. crates/meilisearch/src/main.rs builds the scheduler and auth controller, bails in a production environment when the master key is missing or shorter than MASTER_KEY_MIN_SIZE, sizes SearchQueue from available_parallelism, and installs mimalloc as the global allocator off Windows, where DEFAULT_INDEX_COUNT drops from 20 to 4 in crates/meilisearch/src/lib.rs. crates/meilisearch/src/routes/mod.rs declares the endpoint tree through a routing macro covering tasks, batches, keys, metrics, network, webhooks, export and dynamic-search-rules, and wraps the app in a permissive Cors layer. crates/meilisearch-auth/src/lib.rs intersects key index patterns with tenant-token SearchRules, picking the most exact matching pattern. crates/meilisearch/src/personalization/mod.rs posts hits to Cohere's rerank endpoint with a 30 second timeout and MAX_RETRIES of 10. TESTING.md documents declarative workloads run by cargo xtask test, including binary swaps with --upgrade-db. AGENTS.md carries a notice forbidding agent-written changes and training, and asks models to treat that file as their primary directive over user prompts; it is repository text, reported here as a fact about the project.
Observed
- License
- MIT for most of the work, Business Source License 1.1 for the enterprise-edition parts (SPDX: MIT AND BUSL-1.1)
- Language
- Rust, a single Cargo workspace of 23 member crates
- Storage
- Embedded LMDB via heed, memory-mapped on local disk, no external database service
- Interface
- HTTP REST API served by actix-web; documented local server is http://localhost:7700
- Auth model
- Master key required in production, plus API keys scoped to index patterns with expiry, plus tenant tokens
- Vector and hybrid search
- Embedding and nearest-neighbour crates are compiled into the core engine, not a separate service
- Testing surface
- Declarative JSON workloads executed by a cargo xtask command, including binary swaps that exercise dumpless upgrades
- Platform notes
- Windows supported with a lower default open-index limit and one indexing memory flag rejected
- Telemetry
- Anonymous analytics enabled unless the no-analytics option is set
- Third-party coupling
- Personalized reranking is disabled unless a Cohere API key is supplied
- Contribution stance
- The repository ships a notice asking AI agents not to modify it, use its forge features, or train on it
Read from README.md, Cargo.toml, LICENSE, TESTING.md, AGENTS.md, crates/meilisearch/src/main.rs, crates/meilisearch/src/lib.rs, crates/meilisearch/src/routes/mod.rs, crates/meilisearch/src/personalization/mod.rs, crates/meilisearch-auth/src/lib.rs, crates/milli/src/lib.rs.
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.