Search Engines - Elasticsearch vs OpenSearch vs Vespa vs Typesense#
Search engines marry an inverted index with relevance ranking, faceting, and increasingly vector search. They differ in license, scale ceiling, and how easily you can run them.
Side-by-side#
| Elasticsearch | OpenSearch | Apache Solr | Vespa | Typesense | Meilisearch | |
|---|---|---|---|---|---|---|
| Owner | Elastic NV | AWS / community | Apache | Yahoo open-sourced | Typesense Inc | Meili |
| License | Elastic / SSPL | Apache 2.0 | Apache 2.0 | Apache 2.0 | GPL-3 / commercial | MIT |
| Query | Query DSL | Query DSL | SolrJ / REST | YQL | REST | REST |
| Vector / ANN | Yes (HNSW) | Yes (HNSW, Faiss, NMSLIB) | Yes (HNSW) | Yes (multiple) | Yes | Yes |
| Hybrid search | Yes | Yes | Yes | Yes | Yes | Limited |
| Ops complexity | Medium-high | Medium-high | Medium | High (powerful) | Low | Low |
| Multi-tenancy | Indices, routing | Same | Cores | Native tenants | Limited | Limited |
| Best fit | Default for log + search | OSS license preferred | Long-established Apache shops | Recommendation + search at Yahoo scale | Fast, small/medium search | Tiny / instant search |
Decision tree#
flowchart TB
Q[Need search] --> A{Combined search<br/>+ recsys at scale?}
A -->|yes| Vespa
A -->|no| B{Apache 2.0 license<br/>mandatory?}
B -->|yes| OS[OpenSearch or Solr]
B -->|no| C{Sub-100ms<br/>tiny / instant?}
C -->|yes| Type[Typesense or Meilisearch]
C -->|no| ES[Elasticsearch]
classDef client fill:#dbeafe,stroke:#1e40af,stroke-width:1px,color:#0f172a;
classDef edge fill:#cffafe,stroke:#0e7490,stroke-width:1px,color:#0f172a;
classDef service fill:#fef3c7,stroke:#92400e,stroke-width:1px,color:#0f172a;
classDef datastore fill:#fee2e2,stroke:#991b1b,stroke-width:1px,color:#0f172a;
classDef cache fill:#fed7aa,stroke:#9a3412,stroke-width:1px,color:#0f172a;
classDef queue fill:#ede9fe,stroke:#5b21b6,stroke-width:1px,color:#0f172a;
classDef compute fill:#d1fae5,stroke:#065f46,stroke-width:1px,color:#0f172a;
classDef storage fill:#e5e7eb,stroke:#374151,stroke-width:1px,color:#0f172a;
classDef external fill:#fce7f3,stroke:#9d174d,stroke-width:1px,color:#0f172a;
classDef obs fill:#f3e8ff,stroke:#6b21a8,stroke-width:1px,color:#0f172a;
class Q,A,B,C service;
class Vespa,OS,Type,ES datastore;
What you'll get asked#
- "Elastic vs OpenSearch?" Same lineage (forked 2021 over license). OpenSearch is Apache 2.0 and AWS-led; Elastic has the bigger commercial ecosystem.
- "Why not Postgres FTS?" PG full-text works for small workloads. Past ~10M docs or complex relevance, dedicated engine wins.
- "Vector vs hybrid?" Vectors capture semantics; BM25 captures exact match. Hybrid (RRF or weighted) almost always beats either alone.
Related fundamentals#
FAQ#
What is the difference between Elasticsearch and OpenSearch?#
OpenSearch is a community fork of Elasticsearch maintained by AWS after the licence change in 2021. APIs are mostly compatible, but newer Elasticsearch features and vector capabilities have diverged over time.
Should I use Typesense or Meilisearch?#
Both are simple, fast, in-memory search engines. Typesense has stronger faceting and aggregations. Meilisearch has a smoother default ranking and dev experience. Pick by which fits your data shape better.
When does Vespa beat Elasticsearch?#
Vespa wins for very large vector and tensor workloads, multi-phase ranking, and personalised search at billion-document scale. It is operationally heavier than Elasticsearch and has a smaller community.
Is Solr still used in production?#
Yes, especially in enterprises with long-running Lucene investments. New projects usually start with Elasticsearch or OpenSearch because their APIs and tooling are more modern.
Can search engines replace a vector database?#
For mixed text plus vector workloads, modern Elasticsearch, OpenSearch, and Vespa now compete with dedicated vector databases. Pure vector workloads at huge scale still favour Qdrant, Pinecone, or Weaviate.