Overview
MeiliSearch is an open-source, Rust-built search engine that provides a RESTful API for embedding search capabilities into applications. It is designed to offer a balance between developer experience and search relevance, with features such as typo tolerance, custom ranking, filtering, and faceted search. MeiliSearch aims to simplify the deployment and management of search infrastructure by offering a single binary that can be self-hosted or consumed as a managed cloud service.
The core proposition of MeiliSearch revolves around its speed and relevance algorithms. It employs a finite state transducer for indexing and querying, which contributes to low-latency search responses, even with large datasets. The engine automatically handles typo tolerance, meaning it can return relevant results even if users make spelling mistakes in their queries. This functionality is configurable, allowing developers to fine-tune the strictness of typo matching based on their application's needs, as detailed in the MeiliSearch typo tolerance documentation.
MeiliSearch is suitable for a range of applications requiring real-time search. Developers use it for e-commerce product catalogs where quick, accurate search is crucial for user experience and conversion. Documentation websites can integrate MeiliSearch to provide readers with an efficient way to find information across articles and guides. General web applications benefit from its ability to deliver instant search results as users type, which enhances interactive elements and user engagement. Its focus on a minimal configuration and a wide array of client SDKs across languages like JavaScript, PHP, and Python aims to reduce the integration effort for developers.
The project provides both a self-hostable open-source version and a managed Meilisearch Cloud offering. The open-source variant allows full control over deployment environments and infrastructure, which can be beneficial for applications with specific compliance or scaling requirements. The cloud offering abstracts away the operational overhead, providing a managed service with built-in scalability and uptime guarantees. This dual approach provides flexibility for different development teams and project scales, from small startups to larger enterprises seeking to offload search infrastructure management.
Key features
- Typo Tolerance: Automatically handles spelling errors in search queries to return relevant results, configurable for strictness.
- Custom Ranking: Allows developers to define the relevance of search results based on custom attributes, such as popularity, recency, or price, in addition to text matching.
- Faceted Search and Filtering: Enables users to refine search results by applying multiple filters and categories, supporting complex navigation and discovery.
- Instant Search: Designed to provide search results with low latency, often in milliseconds, as users type their queries.
- RESTful API: Offers a predictable and easy-to-use HTTP API for interacting with the search engine, simplifying integration into various applications.
- Multi-language Support: Capable of handling various natural languages without requiring extensive configuration, supporting a global user base.
- Document Indexing: Supports indexing JSON documents, allowing for flexible data structures to be searched.
- Developer SDKs: Provides client libraries for multiple programming languages (JavaScript, PHP, Python, Ruby, Go, Java, C#, Rust, Dart) to streamline integration.
- Open Source: The core engine is open-source, enabling transparency, community contributions, and self-hosting options.
Pricing
MeiliSearch offers a free tier for its cloud service and paid plans based on document count and search requests. The open-source version can be self-hosted without direct cost for the software itself. Pricing details are current as of May 2026.
| Plan | Documents | Searches/Month | Price/Month | Notes |
|---|---|---|---|---|
| Free (Cloud) | Up to 50,000 | Up to 10,000 | $0 | Managed service with basic features. |
| Starter (Cloud) | Up to 100,000 | Up to 100,000 | $29 | Managed service, includes additional features like analytics. |
| Growth (Cloud) | Up to 500,000 | Up to 500,000 | $99 | Managed service, higher limits and dedicated support. |
| Business (Cloud) | Up to 1,000,000 | Up to 1,000,000 | $199 | Managed service, for larger-scale applications. |
| Enterprise (Cloud) | Custom | Custom | Custom | Dedicated infrastructure and advanced support. |
| Self-Hosted (Open Source) | Unlimited | Unlimited | $0 | Requires self-management of infrastructure. |
For detailed and up-to-date pricing information, refer to the MeiliSearch pricing page.
Common integrations
- JavaScript Frameworks: Integrates with front-end frameworks like React, Vue.js, and Angular using its JavaScript SDK for dynamic search interfaces.
- PHP Applications: Can be integrated into PHP applications and frameworks such as Laravel using the PHP client for backend search functionality.
- Python Applications: Used with Python web frameworks like Django or Flask via the Python SDK for data indexing and search queries.
- Content Management Systems (CMS): Can be used to power search within CMS platforms, offering more advanced search capabilities than built-in options.
- E-commerce Platforms: Leveraged by e-commerce sites to provide product search, often integrating with platforms directly or through custom backend services.
Alternatives
- Algolia: A managed search-as-a-service provider known for its speed and developer tools, often used for similar use cases but with a different pricing model and proprietary engine.
- Elasticsearch: A distributed, RESTful search and analytics engine built on Apache Lucene, offering extensive scalability and a broader set of features for complex data analysis, but with a steeper learning curve and operational overhead compared to MeiliSearch for simple search needs. For a technical comparison of search engines like Elasticsearch and MeiliSearch, resources such as The New Stack's search engine comparison can be useful.
- Typesense: An open-source, typo-tolerant search engine designed for speed and developer-friendliness, positioned as an alternative to Algolia and Elasticsearch for specific use cases.
Getting started
To begin using MeiliSearch, you can start an instance locally and index your first documents. This example uses Node.js with the MeiliSearch JavaScript client.
# 1. Download and run MeiliSearch
# For macOS/Linux:
curl -L https://install.meilisearch.com | sh
./meilisearch
# Alternatively, using Docker:
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest
Once MeiliSearch is running, you can interact with it using an SDK. First, install the JavaScript client:
npm install meilisearch
# or
yarn add meilisearch
Then, create a JavaScript file (e.g., index.js) to add documents and perform a search:
const { MeiliSearch } = require('meilisearch')
// Initialize the client
const client = new MeiliSearch({
host: 'http://localhost:7700',
apiKey: 'aSecretMasterKey' // Replace with your master key if you set one
})
const movies = [
{ id: 1, title: 'Carol', genres: ['Romance', 'Drama'] },
{ id: 2, title: 'Wonder Woman', genres: ['Action', 'Adventure'] },
{ id: 3, title: 'Life of Pi', genres: ['Adventure', 'Drama'] },
{ id: 4, title: 'Terminator', genres: ['Action', 'Sci-Fi'] }
]
async function setupMeiliSearch() {
try {
// Create an index
const index = client.index('movies')
// Add documents to the index
console.log('Adding documents...')
const addDocsResponse = await index.addDocuments(movies)
console.log('Documents added:', addDocsResponse)
// Wait for the documents to be processed
await client.waitForTask(addDocsResponse.uid)
console.log('Documents indexed successfully.')
// Perform a search
console.log('\nSearching for "won":')
const searchResults = await index.search('won')
console.log(searchResults.hits)
console.log('\nSearching for "carol":')
const searchResults2 = await index.search('carol')
console.log(searchResults2.hits)
console.log('\nSearching for typo "woder":') // Typo tolerance in action
const searchResults3 = await index.search('woder')
console.log(searchResults3.hits)
} catch (error) {
console.error('Error:', error)
}
}
setupMeiliSearch();
Run the script:
node index.js
This script will start a MeiliSearch instance, add a set of movie documents, and then demonstrate basic search queries, including one with a typo, to show its typo-tolerance feature. For more advanced configurations and features, consult the MeiliSearch documentation.