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.
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 |
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. |
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. |
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 |
Typesense | Algolia | ElasticSearch | Meilisearch | |
---|---|---|---|---|
Channels |
GitHub issues Public Slack Community Phone Private Slack Paid Prioritized Support |
GitHub issues Public Slack Community Phone Paid Prioritized Support |
GitHub issues Public Slack Community Paid Prioritized Support |
GitHub issues 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 | ✅ | ✅ | ✅ | ❌ |