Self-hosted service
meilisearch/meilisearch avatar
meilisearch/meilisearch

Meilisearch: A Rust-based search API that ships hybrid search without the DevOps overhead

Meilisearch is a fast search engine API in Rust for AI-powered hybrid search, with typo tolerance, faceting, geosearch, and vector search ready out of the box.

59,299 stars2,707 forksRustLicense varies

At a glance

What is it?
Meilisearch is a self-hosted, RESTful search engine written in Rust that bundles hybrid semantic and full-text search, typo tolerance, and multi-tenancy into a single binary. This review covers its architecture, setup, limitations, and where it fits compared to alternatives.
Who is it for?
Adopt Meilisearch if you need a fast, self-contained search API with hybrid semantic and full-text search, typo tolerance, and multi-tenancy out of the box, and you prefer a single binary over a distributed cluster. Avoid it if your dataset exceeds tens of millions of documents, you require advanced relevance tuning like custom ranking formulas, or you need native support for languages beyond the optimized set (Chinese, Japanese, Hebrew, Latin).
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Meilisearch solves and who it is for

Meilisearch is a search engine that exposes a RESTful API, written in Rust. It targets developers who need search functionality in their applications without building and maintaining a search infrastructure from scratch. The README emphasizes features that work out of the box: search-as-you-type with sub-50 millisecond response times, typo tolerance, filtering, faceted search, sorting, synonyms, geosearch, and multi-tenancy. The project is positioned for sites and applications where a lightweight, self-contained search service is preferable to a heavier distributed system. The target user is a developer who wants to add search to a web app, e-commerce site, or content platform and is willing to trade some control over ranking internals for speed and simplicity.

How the hybrid search mechanism works

The core selling point in the README is hybrid search, which combines semantic search and full-text search. Semantic search relies on vector embeddings, and the documentation link points to an experimental vector search feature. The mechanism, as described, is that you provide embeddings for your documents, and Meilisearch indexes them alongside the text. When a query comes in, it performs both a vector similarity search and a traditional keyword search, then merges the results. The README does not specify the exact fusion algorithm, but it states that the goal is to get the most relevant results by combining both approaches. This is a significant architectural shift from earlier versions of Meilisearch, which were purely lexical. The experimental status of vector search means you cannot assume it is stable across versions. The full-text side handles typo tolerance and language-specific tokenization, which is the foundation of the search-as-you-type behavior.

Getting it running: commands and configuration

The README does not include installation commands, but the project is a standard Rust binary. The typical way to run Meilisearch is to download the binary from the releases page or build from source with cargo, then start it with a simple command like ./meilisearch. The server listens on an HTTP port and exposes a RESTful API. Configuration is done via environment variables and the API itself. Key settings include API keys for security, which the README mentions as fine-grained permissions handling. Multi-tenancy is configured through tenant tokens, which allow you to scope search results per user or tenant. The README links to documentation for these features, but it does not provide exact commands or config keys. Based on the repository layout and release notes, you would create an index, add documents via the /indexes/{index_uid}/documents endpoint, and then search via /indexes/{index_uid}/search. For hybrid search, you would need to configure the vector search settings, which are experimental and require enabling a feature flag. The lack of concrete setup details in the README is a gap; you will need to consult the official docs for exact syntax.

Limitations and failure modes

The most obvious limitation is that vector search is experimental. The README links to an experimental section, which means the API and behavior can change between releases. If you build a production system on hybrid search, you must pin a specific version and be prepared to migrate. Another limitation is the language support. The README claims optimized support for Chinese, Japanese, Hebrew, and Latin-alphabet languages, but it does not mention others. If your dataset includes languages like Arabic, Thai, or Vietnamese, you may get suboptimal tokenization and relevance. The sub-50 millisecond claim is a target, not a guarantee; it likely applies to small to medium datasets. Meilisearch is not designed for massive scale. It is a single-node engine, and while it can handle millions of documents, it is not a distributed system. If you need horizontal scaling or advanced relevance tuning like custom ranking formulas, Meilisearch will be the wrong tool.

Alternatives and the difference in approach

The most direct alternative is Elasticsearch or OpenSearch, which are also open-source search engines but built on Java and Lucene. The key difference is architectural: Elasticsearch is a distributed cluster that can scale horizontally, while Meilisearch is a single binary that focuses on out-of-the-box experience. Elasticsearch gives you deep control over relevance through scoring scripts and custom analyzers, but it requires significant operational overhead. Meilisearch sacrifices that control for simplicity. Another alternative is Typesense, which is also a fast, typo-tolerant search engine written in C++. Typesense has a similar philosophy to Meilisearch, but it does not have native hybrid search in the same way; it focuses on lexical search. If you need semantic search, you would have to integrate a separate vector database. Meilisearch's advantage is that it bundles both full-text and vector search into one API, which is a different approach from combining two separate systems.

Maintenance and upgrade cost

The release cadence is active, with three releases within a week in August 2026 (v1.53.1, v1.53.0, v1.52.3). This indicates a project under active development, which is good for bug fixes but also means frequent upgrades. The README does not specify a license, but the repository has a LICENSE file. The upgrade path is not documented in the README, but given the experimental nature of vector search, you should expect breaking changes in that area. The project is written in Rust, which has a reputation for memory safety and performance, but that does not eliminate upgrade cost. The multi-tenancy and security features are mature, but they add configuration overhead. You will need to manage API keys and tenant tokens, which is a maintenance burden but a necessary one for production. Overall, the cost is moderate: you get a self-contained binary, but you must stay on top of releases and test hybrid search after each upgrade.

Editorial conclusion

Adopt Meilisearch if you need a fast, self-contained search API with hybrid semantic and full-text search, typo tolerance, and multi-tenancy out of the box, and you prefer a single binary over a distributed cluster. Avoid it if your dataset exceeds tens of millions of documents, you require advanced relevance tuning like custom ranking formulas, or you need native support for languages beyond the optimized set (Chinese, Japanese, Hebrew, Latin). Before adopting, verify the current license, the experimental status of vector search, and whether the built-in typo tolerance and filtering meet your query patterns. The project is actively maintained with frequent releases, but the experimental vector feature means you should pin a version and test hybrid search thoroughly before production.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes