Search
Search-as-a-service - Algolia, Meilisearch, Typesense for fast, typo-tolerant, relevant search beyond Elasticsearch
Search
Real-time, typo-tolerant, relevance-tuned search is hard. Elasticsearch can do it but is heavy — built for log analytics first, search second. A newer class of search-as-a-service and dedicated search engines trades flexibility for speed, ergonomics, and lower operational overhead.
This page covers those alternatives: Algolia (SaaS leader), Meilisearch and Typesense (open-source, self-hostable), and how to choose.
For full-text logs and analytics, see ELK.
Why a Dedicated Search Engine
| Without one | With one |
|---|---|
LIKE %query% on Postgres → slow, no typo tolerance | < 10 ms instant search |
| Hand-tuned relevance scoring | Built-in: typo, prefix, geo, custom ranking |
| Synonyms in application code | First-class feature |
| Facets / filters / sorting on every page | Built-in, fast |
| Search UI built from scratch | Open-source InstantSearch components |
| Re-indexing on every schema change | Index updates as you write |
The threshold for "you need real search" is lower than people think — a product catalog over a few thousand items, a docs site with non-trivial content, anywhere users type into a search box.
The Players
| Engine | Type | Notes |
|---|---|---|
| Algolia | SaaS only | The pioneer; rich UI components; expensive at scale |
| Meilisearch | Open-source + Meilisearch Cloud | Algolia-like ergonomics; self-host friendly |
| Typesense | Open-source + Typesense Cloud | Same niche as Meilisearch; mature; multi-master clustering |
| Elasticsearch | Open-source + Elastic Cloud | Most flexible, most operational complexity |
| OpenSearch | Open-source (AWS-led fork of Elasticsearch) | Same engine + AWS support |
| Vespa | Open-source | Yahoo's heavyweight; ML-first ranking; complex |
| MeiliSearch / Typesense / Algolia | "instant search" niche | The focus of this page |
| Postgres FTS | Built-in | Free; OK at small scale; not in this niche |
| SQLite FTS5 | Built-in | Tiny scale; static sites work great |
| pgvector / Qdrant / Weaviate / Pinecone | Vector search | Different problem — semantic, not keyword |
Algolia vs Meilisearch vs Typesense
A side-by-side. Full comparison on its own page.
| Aspect | Algolia | Meilisearch | Typesense |
|---|---|---|---|
| License | Proprietary SaaS | MIT (Cloud is paid) | GPLv3 (Cloud is paid) |
| Self-host | No | Yes | Yes |
| Speed (typical) | <10 ms | <50 ms | <50 ms |
| Typo tolerance | First-class | First-class | First-class |
| Faceting / filters | Excellent | Excellent | Excellent |
| Geo search | Excellent | Built-in | Built-in |
| Vector / hybrid search | Yes (in Algolia AI) | Yes (since 1.6) | Yes |
| InstantSearch.js (UI library) | First-party | First-class adapter | First-class adapter |
| Multi-tenant / multi-index | Excellent | Yes | Yes |
| Clustering | N/A (SaaS) | Coming | Multi-master built-in |
| Pricing | $$ — usage-based | $ self-host / $$ cloud | $ self-host / $$ cloud |
| When to choose | "Just works", no ops, money no object | Self-host, modern stack, growing | Self-host, need clustering today |
Learning Path
1. Getting Started
Run Meilisearch in Docker, index sample documents, query with the JS SDK and instant-search UI
2. Algolia vs Meilisearch
Side-by-side comparison, ranking tuning, cost, when to pick each
3. Best Practices
Indexing strategy, relevance tuning, secrets, multi-tenancy, observability
What a Search Engine Solves
The interesting work happens inside the index. The engine handles:
| Feature | What it means |
|---|---|
| Tokenization | Split text into searchable units (handles multiple languages) |
| Stemming | "running" matches "run" |
| Typo tolerance | "appel" matches "apple" |
| Synonyms | "couch" and "sofa" match each other |
| Prefix search | "appl" matches "apple" before you finish typing |
| Faceting | "show me red shoes" — filter and aggregate by attribute |
| Custom ranking | Boost in-stock items, demote out-of-stock |
| Personalization | This user clicked X before, rank X higher |
| Geo search | Within radius / bounding box |
| Hybrid (vector + keyword) | Combine semantic similarity with keyword match |
You'd spend weeks building any one of these well from scratch. Search engines give you all of them, tuned.
When You Don't Need a Dedicated Search Engine
- Small datasets (< few thousand docs) — Postgres FTS often suffices.
- No typo tolerance / relevance needed — exact filters via SQL work.
- Static sites —
lunr.js,pagefind, or even SQLite FTS5 at build time. - Internal tools — the UX bar is lower; simpler tools work.
A search engine is the right tool when users type into a box and expect magic. Otherwise, simpler tools usually win.
Search vs vector / semantic search: this page is about keyword search. For "find me documents semantically similar to this question" (RAG, recommendations), see vector databases — pgvector, Qdrant, Weaviate, Pinecone. Modern search engines (Algolia, Meilisearch, Typesense) all support hybrid keyword + vector search now, which is often the best of both worlds.