Meilisearch
A search engine in one Rust binary with a REST API: typo-tolerant, search-as-you-type results with sensible defaults, plus vector and hybrid search.
- What it is
- Search indexes
- Type
- Open source
- Made by
- Meili SAS
- License
- Community Edition: MIT. Enterprise Edition features (sharding, replication and a few others): Business Source License 1.1, free outside production, turning MIT four years after each release
- Facts checked
- 24 October 2026
What it is
Meilisearch is a single binary that serves a REST API, by default on port 7700. You create an index, send it JSON documents with a primary key, declare which attributes can be filtered and sorted, and search. Defaults aim at search boxes on sites and apps: prefix matching as the user types, one typo allowed in words of five or more characters and two from nine, and a fixed set of ranking rules applied as a bucket sort. Each rule (words, typo, proximity, attribute rank, sort, word position, exactness) only breaks ties left by the ones before it. Tenant tokens, short-lived JWTs that carry a filter such as user_id = 123, let each user search only their own documents.
Every write becomes a task in a queue. Tasks run in order, consecutive compatible tasks on the same index are batched, and each one ends as succeeded, failed (with no changes made) or canceled, so an import is searchable once its task finishes, not when the request returns. Data sits in LMDB, a memory-mapped key-value store: it works when the index is larger than RAM, but runs best when it fits, and deleted documents don’t give disk space back to the operating system.
Since v1.13 (February 2025), AI-powered search is stable: an index can hold vectors, either sent with the documents or generated by a configured embedder such as OpenAI or Hugging Face, and a hybrid query mixes keyword and semantic results by a semanticRatio. One instance is one node. Sharding an index across instances, and replicating shards, is part of the Enterprise Edition, under a separate licence. Meili SAS also sells Meilisearch Cloud, billed by usage or by instance size, in nine regions.
Why teams pick it
- Good results with no tuning: typo tolerance, prefix search and ranking rules are on by default
- Small to operate: one binary, one data directory, a REST API and official client libraries
- Keyword, vector and hybrid search in one index, with embedders that generate vectors from your documents
- Multi-tenant search from the front end through tenant tokens that carry each user’s filter
Watch out for
- Sized for one node: sharding and replication across instances need the Enterprise Edition and a commercial licence in production
- Only the first 10 query words count, and a search returns at most 1,000 hits by default (
maxTotalHits), so it doesn’t suit deep paging or exports - Writes are asynchronous tasks, and large imports block later writes to the same queue until they finish
- LMDB doesn’t shrink: the database grows over time, and performance drops when the index no longer fits in memory or sits on slow disks
Good for
- Data model
- JSON documents with a primary key, in indexes
- Query language
- Search parameters: query, filter, sort, hybrid
- Client protocol
- REST API over HTTP (port 7700)
- Consistency
- Writes are queued tasks, searchable once the task succeeds
- How it scales
- One node; sharding and replication in the Enterprise Edition
- Storage engine
- LMDB, a memory-mapped key-value store
- Written in
- Rust
- Ways to run it
- Self-hosted binary, or Meilisearch Cloud in nine regions
- Pricing model
- Cloud: by usage or by instance size
Alternatives
What all search indexes have in common →Compare side by side →LIKE '%foo%', regex and typo-tolerant searches can use an index.Start an instance, add documents, then search with a typo · bash
curl -L https://install.meilisearch.com | sh
./meilisearch --master-key="aSampleMasterKey" # listens on localhost:7700
# writes are queued: the response holds a taskUid, not a result
curl -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \
-H 'Content-Type: application/json' -H 'Authorization: Bearer aSampleMasterKey' \
--data-binary @movies.json
curl 'http://localhost:7700/tasks/0' -H 'Authorization: Bearer aSampleMasterKey'
# “botman” still finds the Batman films
curl -X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' -H 'Authorization: Bearer aSampleMasterKey' \
--data-binary '{ "q": "botman" }'See it in a real stack
No architecture uses Meilisearch yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2019–2026
Quentin de Quelen, Clément Renault and Thomas Payet had built search for large e-commerce companies and were dissatisfied with the search tools on the market. De Quelen later summed up the goal as Algolia’s performance and relevance with Elasticsearch’s capacity for customisation. They founded the company in Paris in 2019 and released the engine as open source in 2020.
A first prototype in Go proved the idea but hit performance limits; the team blamed garbage collection. Renault had used Rust since its first stable release, so they rewrote the engine in Rust, moving storage from RocksDB to LMDB after read performance problems. Version 1.0 in February 2023, after three years of development, promised no breaking changes until the next major version.
The company raised a $15 million Series A in October 2022 to build Meilisearch Cloud. A vector store arrived in v1.3 in 2023 and became stable AI-powered search in v1.13 in February 2025. In August 2025, with v1.19, Meilisearch split into an MIT Community Edition and an Enterprise Edition under the Business Source License, which holds sharding and other features aimed at large deployments.
Why it’s built this way
- Rust instead of Go or C++
- The Go prototype was slowed by garbage collection, and the team found C++ harder to keep safe and maintain. Rust gave the speed of C++ with checked memory safety.
- LMDB for storage
- The first versions used RocksDB, but reads were slow through its Rust wrapper. LMDB, a transactional memory-mapped store, reads straight from the map without copying.
- Relevance that works without configuration
- The founders wanted any developer to get a good search box quickly, so typo tolerance, prefix search and a pre-configured set of ranking rules are on from the first request.
- An open core with a source-available enterprise edition
- Large companies that self-host, one of them on more than 200 servers, needed sharding and other enterprise features; selling those under BUSL funds the MIT-licensed engine everyone else uses.
Timeline
- 2019
Meilisearch founded in Paris
- 2020
Engine released publicly as open source
- 2022
$15M Series A to build Meilisearch Cloud
- 2023
Version 1.0 in February; vector store in v1.3
- 2025
AI-powered search stable in v1.13; Enterprise Edition under BUSL with v1.19 in August
- 2026
Version 1.55 released in October
- Meilisearch blog: Meilisearch raises a $15M Series A (Quentin de Quelen, 24 October 2022; founded 2019, launched 2020)
- Qovery: Interview of Quentin de Quelen, CEO of Meilisearch (Nov 2021; Go prototype, Rust, RocksDB to LMDB, Algolia and Elasticsearch)
- Serokell: Rust in production, MeiliSearch (interview with Thomas Payet, April 2021)
- Meilisearch blog: Meilisearch 1.0, the next stage in search (7 February 2023)
- Meilisearch blog: Meilisearch 1.13 (AI-powered search stable; vector store first released in v1.3; February 2025)
- Meilisearch blog: Introducing the Meilisearch Enterprise Edition license (27 August 2025, v1.19)
- GitHub: meilisearch/meilisearch releases (v1.55.0, 12 October 2026)
Sources14 · facts checked 24 October 2026
- GitHub: meilisearch/meilisearch README (CE and EE, features, Meilisearch Cloud)
- GitHub: meilisearch/meilisearch LICENSE (MIT AND BUSL-1.1)
- GitHub: meilisearch/meilisearch LICENSE-EE (BUSL 1.1, non-production use, change to MIT after four years)
- Meilisearch docs: Asynchronous operations (task queue, batching, statuses)
- Meilisearch docs: Storage (LMDB, memory mapping, database size)
- Meilisearch docs: Ranking rules (default order, bucket sort)
- Meilisearch docs: Typo tolerance settings (oneTypo 5, twoTypos 9)
- Meilisearch docs: Getting started with AI-powered search (embedders, hybrid, semanticRatio)
- Meilisearch docs: Multitenancy and tenant tokens
- Meilisearch docs: Known limitations (10 query words, 1,000 hits, index size)
- Meilisearch docs: Settings (pagination.maxTotalHits default 1000)
- Meilisearch docs: Sharding and replication overview (Enterprise Edition v1.37+)
- Meilisearch docs: Getting started with self-hosted Meilisearch (install, port 7700, quick start)
- Meilisearch: Pricing (usage-based and resource-based Cloud plans)