Compare Algolia
vs ElasticSearch
vs Meilisearch
vs Typesense

This table is meant to give you an objective side-by-side comparison of key features in each search engine and is based on each search engine's documentation.

We've strived to provide accurate information below, but if you notice any issues, please open an issue here.

Overview

Typesense Algolia ElasticSearch Meilisearch
Source Code Fully open source Proprietary closed source Source-available, licensed under SSPL Fully open source
First Commit 2015 2012 2010 2018
Built Using C++ C++ Java Rust
Core Search Algorithm Built from the ground-up Built from the ground-up Built on top of Lucene Built from the ground-up
Best Suited For Instant Search-as-you-type Experiences for data sets that can fit in RAM, up to 24 TB (or current commercially available RAM size). Instant Search-as-you-type Experiences for datasets up to 128 GB in size. General-purpose search & aggregations over petabyte-scale datasets (eg: log data) Instant Search-as-you-type Experiences for use cases that don't require a highly-available fault-tolerant setup. Recommends providing enough RAM to hold entire dataset in RAM for ideal performance.
Primary Index Location RAM RAM Disk, with RAM cache Disk with Memory Mapped files

Deployment

Typesense Algolia ElasticSearch Meilisearch
Self-Hosted Option ✅️ ✅️ ✅️
SaaS Option ✅️ ✅️ ✅️ ✅️
High Availability /
Fault Tolerance


RAFT-based multi-node clustering


RAFT-based multi-node clustering


Active-passive replication


Only supports a single-node setup, which creates a single point of failure and so is not fault tolerant / production-ready.
GPU Acceleration Support

Can optionally use a GPU when available.
CDN-like Geo-Distributed clusters

Supported in self-hosted and SaaS options, called Search Delivery Network


Available in Premium tier, called Distributed Search Network


Not available as part of hosted offering
Runtime Dependencies None. Self-contained binary.

Built-in high performance HTTP server, that can be exposed to the frontend directly.
N/A, since it's SaaS only Requires JVM, and an application backend.

Cannot be directly exposed to frontend - requires use of nginx, apache or the like as a reverse proxy in front
None. Self-contained binary.

Built-in high performance HTTP server, that can be exposed to the frontend directly. Recommends use of nginx, apache or the like as a reverse proxy in front, to manage the renewal of the SSL certificate
Index Backward Compatibility

Fully backward compatible
N/A

As a SaaS service, Algolia does not expose this detail to end users.


Backward compatible up to 1 major version.


Fully backward compatible
Upgrade Path Replace binary, restart process. No re-indexing required. Managed SaaS service, doesn't require upgrades. Replace binary, restart process. Re-indexing required if upgrading more than 1 major version. Create a dump, replace binary, load the dump.

Features

Typesense Algolia ElasticSearch Meilisearch
REST API ✅️ ✅️ ✅️ ✅️
Typo Tolerance ✅️ ✅️ ✅️

But slow and affects relevance
✅️
Query Field Weights &
Boosting
✅️ ✅️
Scoped API Keys &
Multi-tenant indices
✅️ ✅️
Federated Multi-Index Search ✅️ ✅️ ✅️ ✅️
Grouping / Distinct ✅️

Upto one distinct field
✅️ 🔶

Upto one distinct field, no support for grouping
JOINs across multiple indices ✅️
Dynamic Sorting

Sort fields can be defined at query time using a single index
🔶

Duplicate indices need to be created for each sort order, for Exhaustive Sorting.

Virtual replica indices can be used for Relevant Sorting.


Sort fields can be defined at query time using a single index


Sort fields need to be defined upfront, but can be changed at query time, using a single index.
Faceting & Filtering ✅️ ✅️ ✅️
Ranking on Filter Scores ✅️ ✅️
Facet Value Searches ✅️ ✅️ ✅️
Result Pinning / Merchandising ✅️

Upto 10 results in Free Tier, Upto 10,000 results in Premium Tier
✅️

Available only in closed-source version
Synonyms ✅️ ✅️

Upto 10,000 per index
✅️ ✅️
Dynamic Synonym Suggestions ❌️ ✅️

Available in Premium Tier
Language support All languages All languages All languages All languages
Stop words ✅️ ✅️ ✅️
Stemming ✅️ ✅️
Geo Search 🔶

Limited to one geo point
✅️ 🔶

Limited to one geo point
Automatic Record ID generation ✅️ ✅️

IDs needs to be pre-generated
Sort by String field

Up to 3 tie-breaking sort fields per search query


But not recommended
✅️
Search Analytics Client-side and Server-side Client-side and Server-side
Record Schema Validations ✅️

with coerced mapping
Schemaless

Automatic schema detection needs to be enabled.


with coerced mapping
Custom Ranking Rules ✅️ ✅️ ✅️
Negative Keyword Search
(-query)
✅️ ✅️ ✅️
Phrase Search
("some query")
✅️ ✅️
Vector Search
(Nearest-Neighbor Search)
✅️
Semantic Search

Called NeuralSearch
Similarity Search

Can be implemented using Vector Search
✅️

Can be implemented using Vector Search
Image Search

Built-in integration with CLIP
Voice Search

Built-in integration with Whisper
Conversational Q&A Search

Built-in RAG pipeline and integration with OpenAI and Cloudflare LLMs
Recommendations 🔶️

Not out-of-the-box, but can be implemented using Vector Search
🔶️

Not out-of-the-box, but can be implemented using Vector Search
User-level Search Personalization 🔶️

Not out-of-the-box, but can be implemented using Vector Search.


Premium Tier
Collection Aliases ✅️ ✅️
Collection Swapping ✅️ ✅️ ✅️ ✅️
A/B Testing Results 🔶️

Can be implemented by swapping collections and search parameters based on AB Test Bucket


Premium Tier
🔶️

Can be implemented by swapping collections and search parameters based on AB Test Bucket
Query Suggestions ✅️ ✅️
Visual Dashboard

In Typesense Cloud
✅️ 🔶️

3rd party plugins
✅️

Search only
Site Crawler

DocSearch crawler for docs sites.


DocSearch crawler for docs sites.
General site crawler is part of Premium Tier.


DocSearch crawler for docs sites.
Search UI Component Library

Supports InstantSearch.js


InstantSearch.js


Search UI, requires hosted search


Forked version of InstantSearch.js
Privacy Friendliness

Does NOT collect usage analytics or personal data in both Self-Hosted and SaaS options.
🔶

Collects personal data, usage analytics & IP addresses.
🔶

Collects personal data, hardware information, RAM used, unique fingerprint ID for licensing.
🔶

Collects hardware information, total number of documents, number of document updates, server uptime, search settings, etc. Opt-out supported.

Limits

Typesense Algolia ElasticSearch Meilisearch
Number of Documents No limitation, only constrained by available RAM Unknown No limitation, only constrained by available disk space No limitation, constrained by available disk space and performance is constrained by available RAM.
Maximum Number of Indices No limitation No limitation No limitation 200 for Linux/MacOS, 20 for Windows
Maximum Index Size No limitations, only constrained by available RAM 128 GB No limitation 500GB
Maximum Words per field No limitation No limitation No limitation No limitation
Maximum Record Size No limitation 10KB No limitation 2GB
Number of API Keys No limitation 5000 No limitation No limitation

Support

Typesense Algolia ElasticSearch Meilisearch
Channels GitHub issues
Email
Public Slack Community
Phone
Private Slack
Paid Prioritized Support
GitHub issues
Email
Public Slack Community
Phone
Paid Prioritized Support
GitHub issues
Email
Public Slack Community
Paid Prioritized Support
GitHub issues
Email
Public Discord Community
Support Hours 24 x 7 x 365
for Paid Prioritized Support
Mon - Fri; Business Hours
9am - 5pm in user timezone
for Paid Prioritized Support
24 x 7 x 365
for Platinum and Enterprise Prioritized Support
8am - 10pm (Paris Time),
Mon - Thu
for Enterprise customers
Expert Onboarding & Training