Lightning-fast, typo-tolerant search engine with AI-powered hybrid search
An open-source, typo-tolerant search engine written in Rust that returns instant results with AI hybrid search built in.
Teams pick it for fast site and product search that is simpler to run than Elasticsearch and cheaper than Algolia.
| Category | Search |
| First released | 2018 |
| Latest release | 1.53.1 (Aug 2026) |
| License | MIT / BUSL-1.1 (dual-licensed; Enterprise Edition components under BUSL-1.1) |
| Written in | Rust |
| Runs on | Linux, Macos, Windows |
| Deployment | Self-hosted, Managed |
| Wire protocol | http |
| Query dialect | |
| Consistency | eventual |
| ACID support | no |
| JSON support | native |
| Full-text search | native |
| Vector support | native |
| HA model | primary-standby |
| Managed by | meilisearch-cloud |
Meilisearch is an open-source search engine built to return relevant, typo-tolerant results fast enough to update on every keystroke. You push your data as JSON documents into an index and query it over a REST API. Out of the box it handles typo correction, prefix search, filtering, faceting, synonyms, and geo search, plus vector and hybrid search, so one engine covers both keyword and AI-style retrieval without much configuration.
The project started in 2018 and had its public launch in 2020. It is developed by Meili SAS, a Paris company founded by Quentin de Quelen, Clement Renault, and Thomas Payet, who had worked on search together at Veepee and Louis Vuitton. Meilisearch is written in Rust and the core engine is MIT licensed, though newer enterprise features like sharding ship under the Business Source License. A managed option, Meilisearch Cloud, runs the same open-source core.
Adoption skews toward product teams that want strong search without running a search team. Hugging Face uses it to make more than two million models and datasets discoverable, Louis Vuitton runs it for in-store search, and Bookshop.org, Platform.sh, Symfony, and GoRails all use it in production. The draw is the mix of good defaults, a single small binary, and pricing that stays predictable as query volume grows.
Meilisearch runs as a single Rust binary with no external dependencies. Data persists on disk through LMDB, a memory-mapped key-value store, so the operating system keeps hot pages in RAM and reads them without extra copying. That design is the root of its speed: queries touch memory-mapped structures rather than a heavy on-disk index, and it starts fast and stays light on resources compared with a JVM-based engine.
A query runs through tokenization, typo-tolerant matching, filtering, and ranking in one pass. Relevance comes from a chain of ranking rules applied in order: words, typo, proximity, attribute, sort, and exactness. You can reorder those rules or add your own sort attributes, and because the ordering is explicit, tuning why one result outranks another is far more transparent than a single opaque score.
You talk to Meilisearch through a REST API secured by API keys, with official clients for JavaScript, Python, PHP, Ruby, Go, Rust, Java, and more. Writes are asynchronous: adding or updating documents returns a task you can poll for status while indexing happens in the background. For availability, Meilisearch supports a primary and read replicas, and the newer enterprise build adds sharding to spread a large index across nodes.
Meilisearch stores data as JSON documents grouped into indexes, one index per searchable collection like products or articles. Each document needs a primary key that identifies it for updates. There is no rigid schema, so you add fields freely and the engine infers types and builds its search structures from the documents you push in.
Typo tolerance is on by default and is a big reason search feels forgiving. Meilisearch matches a query within one or two character edits, so a search for smaphone still finds smartphone with no setup. You can tune the word length where each typo level kicks in, disable it per field, and exact matches always rank above corrected ones.
Relevance is decided by an ordered chain of ranking rules: words, typo, proximity, attribute, sort, then exactness. Meilisearch applies them one after another to break ties, and you can reorder the chain or add sort attributes like popularity or price. Because the order is explicit, you can reason about exactly why one result outranks another.
Beyond keywords, Meilisearch stores embeddings and runs approximate nearest-neighbor search for semantic matching. It can generate vectors through configured embedders such as OpenAI or Hugging Face, or take vectors you supply. Hybrid search blends the keyword score with the semantic one in a single query, the usual setup for RAG retrieval.
Marking fields as filterable lets you narrow results with filters and build faceted navigation, the category and price filters down the side of a store. Meilisearch returns facet counts with the results in the same request, so refining never costs a second round trip. Numeric, string, boolean, and geo fields can all be filtered and faceted.
Writes in Meilisearch are asynchronous. Adding documents or changing settings enqueues a task with an id you poll until it succeeds, which keeps indexing off the query path. Access is guarded by API keys from a master key: a search-only key is safe to ship to the browser, while an admin key stays on your server for indexing and setup.
Live GitHub adoption, updated daily
A handful of the companies running it in production
The core use case: search boxes that refresh on every keystroke. Typo tolerance, prefix matching, and low latency give you Algolia-style instant results running on infrastructure you control.
Faceted discovery with filters for brand, price, and category, each showing live counts. Meilisearch returns the facets and the matches in one request, which keeps browsing large catalogs responsive.
Retrieval for RAG and recommendations, where meaning matters more than exact words. Built-in embedders and hybrid ranking combine keyword and vector search without standing up a separate vector store.
Teams leaving Algolia to cut per-search costs or keep data in house. The API and the InstantSearch adapter are close enough that most migrations are a reindex and a config change, not a rewrite.
Meilisearch indexes data that lives elsewhere. With no transactions or relational joins, your system of record should stay in Postgres or similar, with documents synced into Meilisearch for search.
It answers search queries, not analytical ones. For group-bys, rollups, and column scans over billions of rows, an engine like ClickHouse or DuckDB is a far better fit for that work than a search index.
Logs at massive volume suit Elasticsearch or OpenSearch, which shard and spill across many disks. Meilisearch keeps hot data in memory, so log-scale retention gets costly faster than it tends to be worth.
There is no join engine or SQL layer, so multi-table logic and deep aggregations belong in a relational database. Meilisearch is built to search a flat document set fast, not to model related entities.
Head-to-head specs against the top 5 alternatives
| Spec | ||||||
|---|---|---|---|---|---|---|
| Identity | ||||||
| License | MIT / BUSL-1.1 (dual-licensed; Enterprise Edition components under BUSL-1.1) | Elastic-2.0 | GPL-3.0 | Apache-2.0 | Proprietary | Apache-2.0 |
| First released | 2018 | 2010 | 2018 | 2021 | 2012 | 2004 |
| Capabilities | ||||||
| Full-text | Native | Native | Native | Native | Native | Native |
| Vector | Native | Native | Native | Native | Native | Native |
| Hybrid search | Native | Native | Native | Native | Native | Native |
| HA model | Primary-standby | Primary-standby | Raft | Primary-standby | Multi-master | Primary-standby |
| Ecosystem | ||||||
| Managed providers | 1 | 3 | 1 | 3 | 1 | 2 |
| Integrations | 3 | 6 | 5 | 7 | 6 | 5 |
| Use cases | ||||||
| Best for | Instant site search, typo-tolerant autocomplete, e-commerce product search, and AI-powered semantic retrieval | Full-text search, log analytics, observability, security analytics, and real-time data exploration at scale | Instant search experiences with typo tolerance, semantic/hybrid search, developer-friendly search | Full-text search, log analytics, observability, and security analytics at scale | Instant site search, e-commerce product discovery, and AI-powered search experiences with typo tolerance | Enterprise full-text search, faceted navigation, e-commerce search, and large-scale document retrieval |
| Not ideal for | Complex relational queries, transactional workloads, or primary data storage | Primary data storage for transactional workloads, strong-consistency requirements, or simple key-value use cases | General-purpose database needs, complex analytics, or log aggregation at massive scale | OLTP workloads, strong consistency requirements, or relational data modeling | Primary data storage, complex relational queries, or log analytics | Primary data storage, transactional workloads, or simple key-value use cases |
Run Meilisearch with Docker, create an index by adding documents, and run your first typo-tolerant search. A couple of minutes end to end.
docker run -p 7700:7700 -v $(pwd)/meili_data:/meili_data \
getmeili/meilisearch:v1.53 \
meilisearch --master-key=aMasterKeycurl http://localhost:7700/indexes/books/documents \
-X POST -H 'Authorization: Bearer aMasterKey' \
-H 'Content-Type: application/json' \
-d '[
{ "id": 1, "title": "The Pragmatic Programmer", "rating": 4.8 }
]'curl http://localhost:7700/indexes/books/search \
-X POST -H 'Authorization: Bearer aMasterKey' \
-H 'Content-Type: application/json' \
-d '{ "q": "pragmatik programer" }'The misspelled query still finds the book. From here, point an official client at the same endpoint, or browse and manage indexes visually in a GUI.
Fast, typo-tolerant open-source search engine with built-in vector and semantic search
The world's most advanced open-source relational database
The most popular document database for modern applications
High-performance open-source vector database for next-generation AI applications
Fast in-process analytical database with rich SQL support and zero dependencies
In-process SQL database compatible with SQLite, written in Rust with vector search and CDC support
Connect to Meilisearch in 30 seconds. Browse tables, run queries, and edit rows visually, on localhost, self-hosted, or cloud.
Open Meilisearch in 1bench