The following content is based on each search engine's documentation and is meant to provide you with an objective side-by-side comparison.
We've strived to provide accurate information above, 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, with plans for closed-source extensions in the future |
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 be 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 up to 10M records, that don't require a highly available deployment. |
Primary Index Location | RAM | RAM | Disk, with RAM cache | RAM |
Typesense | Algolia | ElasticSearch | Meilisearch | |
---|---|---|---|---|
Self Hosted Option | ✅️ | ❌ | ✅️ | ✅️ |
SaaS Option | ✅️ | ✅️ | ✅️ | ❌ |
Fault Tolerance | ✅ RAFT-based clustering | ✅ RAFT-based clustering | ✅ Active-passive replication | ❌ |
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 | Requires use of nginx, apache or the like as a reverse proxy in front, before exposing to frontend |
Index Backward Compatibility |
✅ Fully backward compatible |
✅ Fully backward compatible |
✅ Fully backward compatible |
❌ Not backward compatible across versions. Version upgrades require re-indexing. |
Upgrade Path | Replace binary, restart process | Managed SaaS service, doesn't require upgrades | Replace binary, restart process | Replace binary, re-index all documents |
Typesense | Algolia | ElasticSearch | Meilisearch | |
---|---|---|---|---|
REST API | ✅️ | ✅️ | ✅️ | ✅️ |
Typo Tolerance | ✅️ | ✅️ |
✅️ But slow and affects relevance | ✅️ |
Query Field Weights / Boosting | ✅️ | ❌ | ✅️ | ❌ |
Scoped API Keys / Multi-tenancy | ✅️ | ✅️ | ❌ | ❌ |
Federated Search | ✅️ | ✅️ | ✅️ | ❌ |
Grouping / Distinct | ✅️ |
✅ Upto one distinct field | ✅️ |
✅ Upto one distinct field |
Dynamic Sorting |
✅ Sort fields can be defined at query time using a single index |
❌ Duplicate indices need to be created for each sort order |
✅ Sort fields can be defined at query time using a single index |
❌ Duplicate indices need to be created for each sort order |
Faceting & Filtering | ✅️ | ✅️ | ✅️ |
✅ Only string-type facets |
Facet Value Searches | ✅️ | ✅️ | ❌ | ❌ |
Result Pinning / Merchandising | ✅️ |
✅ Upto 10 results in Free Tier, Upto 10,000 results in Premium Tier | ✅️ | ❌ |
Synonyms | ✅️ | ✅️ Upto 10,000 per index | ✅️ | ✅️ |
Dynamic Synonym Suggestions | ❌️ | ✅️ Available in Premium Tier | ❌ | ❌ |
Language support | All languages, expect logographic ones | All languages | All languages | Latin-based languages, English, and kanji languages |
Stop words | ❌ | ✅️ | ✅️ | ✅️ |
Geo Search | ❌ | ✅️ | ✅️ | ❌ |
Automatic Record ID generation | ✅ | ✅️ | ✅️ | ❌ IDs needs to be pre-generated |
Sort by String field | ❌ |
✅ But not recommended | ✅️ | ❌ |
Search Analytics | Client-side, through InstantSearch.js | Client-side and Server-side | ❌ | Client-side, through InstantSearch.js |
Record Validations | ✅️ | ❌ |
✅ with coerced mapping | ❌ |
Custom Ranking Rules |
✅ Upto 3 fields | ✅️ | ✅️ | ✅️ |
Negative Keyword Search ( -query )
| ✅️ | ✅️ | ✅️ | ❌ |
Exact Keyword Search ( "query" )
| ❌ | ✅️ | ✅️ | ❌ |
User-level Search Personalization | ❌ |
✅ Premium Tier | ❌ | ❌ |
Collection Aliases | ✅️ | ❌ | ✅️ | ❌ |
A/B Testing Results | ❌ |
✅ Premium Tier | ❌ | ❌ |
Query Suggestions | ❌ | ✅️ | ❌ | ❌ |
Visual Dashboard | ❌ | ✅️ | ✅️ 3rd party plugins | ✅️ Search only |
Site Crawler | ❌ | ✅ Premium Tier | ❌ | ❌ |
UI Component Library | ✅ Supports InstantSearch.js | ✅ InstantSearch.js | ✅ Search UI, requires hosted search | ✅ Supports InstantSearch.js |
Typesense | Algolia | ElasticSearch | Meilisearch | |
---|---|---|---|---|
Index Count Limit | No limitation | No limitation | No limitation | 200 |
Index Size Limit | No technical limits, constrained by available RAM | 128 GB | No limitation | 100GB default, can be modified |
Maximum Words per field | No limitation | No limitation | No limitation | 1000 |
Record Size Limit | No limitation | 10KB | No limitation | Not published |
Typesense | Algolia | ElasticSearch | Meilisearch | |
---|---|---|---|---|
Channels |
Github issues Community Slack Paid Prioritized Support |
Github issues Community Phone Paid Prioritized Support |
Github issues Community Paid Prioritized Support |
Github issues Community |
Expert Onboarding & Training | ✅ | ✅ | ✅ | ❌ |