Ranked hits on every keystroke, typos included
Meilisearch is a Rust search engine built for the search box of a website or an app. JSON documents go in through its REST API and are indexed asynchronously, so a search fired right after an upload can come back empty. In the README's example, the query wondre woman finds Wonder Woman. It handles full-text, semantic and hybrid queries, and the README promises search-as-you-type results in under 50 milliseconds.
Typo rules, facets and embeddings handled by the engine
- Typo tolerance on by default: one typo from five characters, two from nine, and a typo on the first letter counts as two.
- Filters, facets, sorting and geosearch: sort by price or date, filter on geographic coordinates, build a faceted navigation.
- Embeddings generated by the engine: declare an embedder (OpenAI, Cohere, Mistral, a local Hugging Face model and others) and Meilisearch vectorizes every document in batches, recomputing only what changed.
semanticRatio, 0.5 by default, weighs keyword against semantic results. - Multi-tenancy through tokens: fine-grained API keys and tenant tokens give each customer of a SaaS its own results.
- Language support: tuned handling of Chinese, Japanese, Hebrew and Latin-alphabet languages.
- Hooks for AI agents: a native MCP server on
/mcp, still experimental, and a LangChain vector store.
Enterprise-only replication and databases tied to one version
Replication and sharding require the Enterprise Edition. The Community Edition is MIT and free for commercial use. The Enterprise modules are under Business Source License 1.1: Meili SAS forbids them in production without a commercial agreement, and each version converts to MIT four years after release. The docs put replication and sharding, available from v1.37, in that edition, so a self-hosted Community instance is one machine with no replica. The README itself recommends Meilisearch Cloud, with a 14-day trial, ahead of self-hosting.
Without --env production, every route is public. Instances start in development mode, where the master key is optional. In production, Meilisearch refuses to start without a key of at least 16 bytes and turns off the built-in search preview, which the versioning policy calls a testing tool. Anonymized telemetry is on by default; --no-analytics turns it off.
The docs aim it at app and site search, not analytics. The Elasticsearch comparison page hands logs, metrics, aggregations and billion-document datasets to Elasticsearch. The hard limits point the same way: a query only counts its first ten words, and a search returns at most 1,000 hits unless maxTotalHits is raised. For a static site with no server, Pagefind indexes the generated HTML and searches inside the browser.
LMDB storage keeps freed space to itself. The store is memory-mapped: the docs say it works best when the dataset fits in RAM, report that a RAM-to-disk ratio around 1/3 does not materially hurt performance, and favor an NVMe SSD over an NFS mount. Deleting documents does not shrink the file, which tends to grow over time.
Latest release: v1.56.0, October 26, 2026. The 1.x line goes back to February 2023. Thirty-two minor versions shipped over the past year, and fixes land on several branches at once (v1.52.4, v1.53.3 and v1.54.3 all on October 1). A database stays bound to the version that created it. Upgrading takes a snapshot, the new binary and the --upgrade-db flag; the docs warn the process is not atomic and fall back on a dump when the binary refuses. The versioning policy ships these format breaks as minor releases.
