Split View: 차세대 검색 엔진 2026 — Meilisearch·Typesense·Elasticsearch·OpenSearch·Quickwit·Vespa 심층 비교 (Elastic 이후의 풍경)
차세대 검색 엔진 2026 — Meilisearch·Typesense·Elasticsearch·OpenSearch·Quickwit·Vespa 심층 비교 (Elastic 이후의 풍경)
프롤로그 — Elasticsearch는 여전히 거인이지만, 풍경은 흩어졌다
2018년에 "검색 엔진 뭐 쓸까요"의 답은 사실상 하나였다. Elasticsearch. ELK 스택은 로그도 Elasticsearch였고, 사이트 검색도 Elasticsearch였고, 추천도 (어떻게든) Elasticsearch에서 굴렸다.
2026년에 같은 질문을 던지면 답이 다섯 갈래는 나온다.
- "in-app 검색이면 Meilisearch나 Typesense, 굳이 ES 안 써요."
- "로그 검색은 Quickwit으로 옮겼어요. S3에 그냥 두는 게 미친 가성비."
- "Elastic 라이선스 때문에 OpenSearch로 갔습니다. AWS에 살면 자연스러워요."
- "추천·RAG·real-time AI serving은 Vespa예요. 다른 게 못 따라옵니다."
- "여전히 Elasticsearch입니다. v3 라이선스도 살 만하고, ESQL이 좋아요."
이 글은 2026년 5월 기준 검색 엔진들을 솔직하게 비교한다. 각 엔진의 강점·약점, 그리고 모든 곳에 들어온 hybrid search(풀텍스트 + 벡터 + reranker)의 현실, 그리고 "언제 무엇을 골라야 하는가"에 대한 결정 프레임워크까지.
미리 결론을 한 줄로: "풀텍스트 vs 벡터" 이분법은 옛말이다. 2026년의 정답은 거의 항상 hybrid다. 다만 누가 hybrid를 가장 매끄럽게 해주는가는 다르다.
1장 · 도구 풍경 — 일곱 가지 + 알파
먼저 도구 지도를 그린다. 카테고리가 섞이지 않게.
| 카테고리 | 도구 | 한 줄 |
|---|---|---|
| in-app/site 검색 (단순함) | Meilisearch·Typesense | Rust/C++로 가벼움, 셀프호스트 친화 |
| 종합 검색·분석 | Elasticsearch·OpenSearch | 거인 + AWS 포크 |
| 로그·observability 검색 | Quickwit·Loki·Elasticsearch | S3 기반이 새 흐름 |
| AI serving 검색 | Vespa | real-time ranking·tensor·ML 일등시민 |
| SaaS 사이트 검색 | Algolia | 자체 호스트 없음, 매우 빠름 |
| 초경량 | Sonic | 자동완성 정도, Rust |
| 검색·분석 융합 | Apache Doris·StarRocks·ClickHouse | OLAP가 검색을 흉수하기 시작 |
| 벡터 DB | Pinecone·Weaviate·Qdrant·Milvus·LanceDB | 다음 절에서 별도 |
대부분의 사람이 한 번에 다 검토하지 않는다. 시나리오 세 가지 — in-app 검색, 로그 검색, RAG 검색 — 으로 보면 후보가 자연스럽게 좁혀진다.
- In-app 검색 — 사이트 검색·상품 검색·문서 검색. Meilisearch·Typesense·Algolia·Elasticsearch·OpenSearch.
- 로그·observability — 트레이스·메트릭·로그. Quickwit·Elasticsearch·OpenSearch·Loki.
- RAG·real-time AI — 임베딩 + 풀텍스트 + reranker. Vespa·Elasticsearch·OpenSearch·Weaviate·Qdrant·pgvector + Meilisearch hybrid.
2장 · Elasticsearch — 거인이 살아 있다
Elasticsearch는 죽지 않았다. 오히려 2024~2025에 두 가지로 반격했다.
2.1 라이선스 — SSPL/Elastic License v2에서 AGPL/Elastic v3로
2024년 후반 Elastic이 Elasticsearch와 Kibana를 AGPL v3(Elastic License v2와 병행) 로 다시 오픈했다. 이 결정은 OpenSearch 진영에 대한 명백한 신호였고, OSS 친화 클라우드(Bonsai·Elastic Cloud·자체 호스트)에 다시 활기를 가져왔다. 다만 AWS 매니지드 Elasticsearch 서비스가 다시 돌아온다는 의미는 아니다 — AWS는 OpenSearch에 자원을 모두 투입한 상태다.
라이선스 결정의 핵심을 정리하면.
- AGPL v3 — 진짜 OSS. 단, 서비스로 호스트할 때 수정 코드 공개 의무.
- Elastic License v2 — 매니지드 SaaS로 재판매하지 않는 한 자유롭게 사용.
- 양자 택일 — 사용자가 둘 중 하나로 받음.
2.2 ESQL — SQL 같은 새 쿼리 언어
Elasticsearch 8.11+에서 ESQL(Elasticsearch Query Language)이 GA됐다. Lucene의 쿼리 DSL을 직접 짜는 대신, 파이프 기반 SQL-ish 문법으로 동일한 일을 한다.
FROM logs-*
| WHERE @timestamp > NOW() - 1 hour AND http.status >= 500
| STATS count(*) BY service.name
| SORT count DESC
| LIMIT 10
ESQL의 의미는 단순하다. "로그·메트릭에서 Elasticsearch가 OLAP에 더 가까워졌다" — Apache Doris·ClickHouse 같은 분석 엔진과 경쟁할 수 있는 표면을 갖췄다는 신호. ESQL은 검색 인덱스가 아니라 통계·집계에 최적화된 경로를 쓴다.
2.3 벡터 검색·hybrid가 1군 시민
8.x 후반부터 dense vector 필드와 HNSW 인덱스, BM25 + kNN의 hybrid 검색이 표준 기능이다. learning_to_rank·ELSER(Elastic이 학습한 sparse 임베딩) 도 제공돼서, 별도 벡터 DB 없이 RAG 파이프라인 한가운데에 둘 만한 옵션이 됐다.
2.4 Elasticsearch의 강점·약점
- 강점: 모든 시나리오에 쓸 수 있는 만능성, 풍부한 에코시스템(Kibana·Logstash·Beats·Fleet·APM), ES 8.x의 hybrid·ESQL.
- 약점: 운영 복잡도(JVM·shard·replica·노드 튜닝), 가격, 콜드 데이터 비용. 대량 로그 데이터를 모두 hot tier에 두려면 비용이 빨리 무서워진다.
3장 · OpenSearch — AWS 포크의 정치학과 기술학
2021년 ES SSPL 전환에 반발해 AWS가 fork한 OpenSearch는 5년이 지나 더 이상 "fork"가 아니라 독자 프로젝트다. 2026년의 현황.
- 거버넌스 — 2024년 9월 AWS는 OpenSearch 프로젝트를 Linux Foundation 산하 OpenSearch Software Foundation으로 이관했다. SAP·Uber·Aiven·Atlassian 등이 founding member로 참여. 이 변화의 의미는 큰데, "AWS-only 프로젝트"라는 인식을 깨고 다중 벤더 거버넌스를 만든 것.
- 호환성 — OpenSearch는 Elasticsearch 7.10에서 갈라졌고, 그 이후 API 호환성은 더 이상 1:1이 아니다. 다만 클라이언트 라이브러리 수준에서는 여전히 호환되는 부분이 많다.
- 벡터 —
opensearch-knn플러그인, HNSW·IVF·k-NN 지원. Faiss·Lucene 기반 백엔드 선택 가능. - OpenSearch Dashboards — Kibana fork. 기능은 Kibana보다 한 발 늦지만 따라가는 중.
OpenSearch를 고르는 경우는 대체로 두 가지.
- AWS에 살고 매니지드 검색을 쓴다 — Amazon OpenSearch Service가 가장 자연스러운 선택.
- Elastic License v2의 SaaS 재판매 제약을 피해야 한다 — 자기가 제공하는 서비스의 일부로 검색 엔진을 노출하는 매니지드 검색 서비스 회사들.
대부분의 in-app·로그 시나리오에서 ES 또는 OpenSearch의 기능은 거의 동등하다. 다만 ESQL 같은 ES 신기능이 OpenSearch에는 다른 모양(PPL — Piped Processing Language)으로 들어오기 때문에, 이미 어느 한쪽 쿼리 언어에 코드가 짜여 있으면 옮기는 비용이 있다.
4장 · Meilisearch — Rust로 만든 단순함의 미학
Meilisearch는 in-app 검색에 특화된 Rust 검색 엔진이다. 2026년 5월 기준 v1.13+ 시리즈. 한마디로 정의하면 "Algolia 같은 경험을 셀프호스트로".
4.1 왜 인기인가
- 단일 바이너리 — Rust로 빌드된 정적 바이너리 하나. JVM 없음, 의존성 없음.
- 0 설정에 가까운 시작 —
meilisearch한 줄로 띄우고, JSON 문서 POST하면 즉시 검색 가능. - typo tolerance·prefix·하이라이트·페이셋·동의어 — in-app 검색에 필요한 거의 모든 게 기본 탑재.
- JS·React·Vue SDK가 매끄럽다 — InstantMeiliSearch 같은 도구로 5분이면 UI에 붙는다.
4.2 2026년 새 기능 — Vector·Hybrid
Meilisearch는 v1.6에서 dense vector 검색을 도입했고, 2025년 들어 embeddings·rerankers·hybrid가 안정화됐다.
// Meilisearch 1.x — hybrid 검색
const results = await client.index('products').search('blue runners', {
hybrid: {
embedder: 'openai',
semanticRatio: 0.7,
},
limit: 20,
})
semanticRatio: 0.7은 "벡터 70%, BM25 30% 가중치로 섞기". 0이면 풀텍스트 only, 1이면 벡터 only.
4.3 Meilisearch의 강점·약점
- 강점: 가장 단순한 운영, 가장 빠른 시작, in-app 검색에 거의 모든 게 기본 제공, 엣지·셀프호스트 친화적.
- 약점: 분산·샤딩이 ES만큼 성숙하지 않음 (멀티 노드 클러스터링이 후순위), 로그 검색·OLAP 시나리오에는 부적합, 매우 큰 단일 인덱스(수억 문서 이상)는 ES가 더 안정적.
언제 고르는가 — 상품 카탈로그·문서 검색·블로그 검색·작은~중간 in-app 검색. Algolia를 셀프호스트로 대체하려는 거의 모든 경우.
5장 · Typesense — C++로 만든 또 다른 in-app 강자
Typesense는 C++로 작성된 in-app 검색 엔진이다. Meilisearch와 같은 시나리오를 노리지만, 철학이 약간 다르다.
5.1 Meilisearch와의 차이
- 언어 — Meilisearch는 Rust, Typesense는 C++. 둘 다 단일 바이너리. 성능은 거의 비등.
- 분산 — Typesense는 처음부터 Raft 기반 분산 클러스터링을 지원. 멀티 노드 HA가 v0.x부터 1군 시민.
- multi-tenancy — 한 클러스터에 여러 컬렉션, 컬렉션마다 API key의 search scope를 좁히는 패턴이 매끄럽다. SaaS의 in-app 검색에 잘 맞음.
- 시각화 도구 — Typesense Dashboard는 ES Kibana만큼은 아니지만, 도구 자체가 단순해서 큰 대시보드가 필요 없다.
5.2 2026년 새 기능 — Conversational·Vector·Hybrid
Typesense는 v0.25+부터 벡터 검색·hybrid·자연어 검색을 들고 왔다. "Conversational search" — LLM과 결합해 자연어 질문에 직접 답하는 endpoint도 v28.x에서 GA.
const result = await client.collections('products').documents().search({
q: 'red running shoes under 100',
query_by: 'name,description,embedding',
vector_query: 'embedding:([], k: 50, alpha: 0.4)',
})
alpha: 0.4 — Meilisearch의 semanticRatio와 같은 개념. 풀텍스트와 벡터의 가중치.
5.3 Typesense의 강점·약점
- 강점: 분산 클러스터링이 1군 시민, multi-tenant 친화, 매우 빠른 응답 시간, SDK가 잘 짜여 있음.
- 약점: 커뮤니티가 Meilisearch보다 조금 작음(절대 작은 건 아니지만 상대적으로), 일부 자연어/이질문자 시나리오에서 Meilisearch가 약간 매끄러움.
언제 고르는가 — SaaS의 multi-tenant in-app 검색, 분산이 처음부터 필요한 in-app 검색.
6장 · Quickwit — S3-native 로그 검색 그리고 Datadog 인수
Quickwit은 검색 엔진 풍경에서 가장 최근의 큰 사건이다. Rust로 작성된 로그 검색 특화 엔진으로, 객체 스토리지(S3·GCS·Azure Blob)를 1차 저장소로 사용한다는 점에서 ES와 결정적으로 다르다.
6.1 왜 중요한가 — "S3에 그냥 두는 게 미친 가성비"
ES로 로그를 운영해 본 사람은 안다. 시계열 데이터를 hot tier에 두려면 SSD가 끝없이 필요하고, frozen tier·snapshot·ILM 설정은 운영 부담의 절반을 차지한다.
Quickwit의 모델은 정 반대다.
- 인덱스 파일(splits)을 S3에 그대로 두고, 검색 시에 필요한 부분만 가져온다.
- 컴퓨트와 스토리지가 완전 분리. 검색 노드는 stateless. 인덱싱 노드만 약간의 상태.
- 비용 단가는 S3 가격이다. 즉 EBS/SSD 대비 한 자릿수 분의 1.
6.2 2024년 Datadog 인수 — 그 후
2024년 10월 Datadog이 Quickwit을 인수했다. 인수 후 Quickwit OSS는 어떻게 되는가가 시장의 가장 큰 질문이었는데, 2025~2026 사이 답은 "유지된다, 단 핵심 개발은 Datadog 내부 로그·트레이스 시스템에 더 깊이 들어간다".
- OSS 자체 — Apache 2.0 라이선스로 유지. GitHub repo도 활발히 업데이트.
- 상용 클라우드 — Quickwit Cloud는 신규 가입을 종료. 대신 Datadog 매니지드 로그가 Quickwit 기반으로 동작.
- 신규 채택 위험 — 인수 후 OSS의 "공식 매니지드" 옵션이 사라진 셈. 셀프호스트할 자신이 있으면 여전히 최고의 선택이지만, "관리자 없이 그냥 쓰고 싶은" 회사에게는 위험 신호.
6.3 Quickwit의 데이터 모델
ES와 다른 두 가지.
- append-only 시계열 위주 — 업데이트는 제한적. 로그·트레이스에 최적화.
- schema-less가 1군 — JSON 그대로 받아서 인덱싱. 동적 필드 매핑이 ES보다 매끄러움.
쿼리는 Elasticsearch DSL과 유사한 형태도 지원하고, OpenTelemetry·Jaeger·Grafana와의 통합이 1군이다.
6.4 Quickwit의 강점·약점
- 강점: S3-native로 압도적 비용 효율, 로그·트레이스 시나리오에 최적화, OpenTelemetry/Grafana 통합, stateless 검색 노드.
- 약점: in-app 검색에는 부적합(업데이트가 약함), Datadog 인수 후 OSS 매니지드가 사라짐, 풀텍스트 외 기능(벡터·집계의 일부)은 ES보다 덜 풍성함.
언제 고르는가 — 로그·트레이스·observability 검색, S3에 콜드 데이터까지 다 두고 싶을 때.
7장 · Vespa — 진짜 AI serving 검색
Vespa는 흥미로운 위치에 있다. Yahoo!의 내부 검색·추천 인프라에서 시작해, 2017년 오픈소스화, 2023년 Verizon Media에서 Vespa.ai로 spinoff. 2026년 기준 v8.x.
Spotify·Wikipedia·Pinterest 같은 곳의 검색·추천 시스템이 Vespa로 돌아간다. 무엇이 특별한가.
7.1 다른 검색 엔진과의 결정적 차이
- Tensor가 1군 시민 — 임베딩·다차원 텐서를 인덱스/스토리지/쿼리에 직접 다룬다. 벡터 검색이 부가 기능이 아니라 핵심.
- ranking pipeline이 1군 시민 — first-phase·second-phase·global-phase ranking이 구조에 있다. ONNX·TensorFlow 모델을 ranking 단계에서 직접 실행.
- real-time write + serving — 인덱싱과 서빙이 같은 노드. 실시간 업데이트가 매끄럽다.
이게 RAG·추천·real-time AI serving에 강한 이유다.
7.2 ColBERTv2 — Vespa가 가장 매끄럽게 다루는 reranker
ColBERTv2는 dense retrieval과 cross-encoder reranking 사이의 효율적인 중간점이다. 각 토큰별 임베딩으로 late interaction을 계산하는데, Vespa는 이를 1군 시민으로 다룬다 — 인덱스에 ColBERT 텐서를 직접 저장하고, ranking 단계에서 효율적인 MaxSim 계산을 한다.
7.3 Vespa의 강점·약점
- 강점: 진짜 AI serving 검색, 텐서·임베딩·모델이 1군 시민, real-time 업데이트, 매우 큰 규모 입증됨.
- 약점: 학습 곡선이 가파름, 운영 복잡도가 ES보다 더 큼, 작은 in-app 검색에는 과함, 매니지드 옵션(Vespa Cloud) 외에는 셀프호스트 운영 부담.
언제 고르는가 — 추천 시스템 핵심, RAG의 진짜 핵심, 검색과 ranking 모두 ML 모델로 돌아가는 곳.
8장 · Algolia·Sonic·Apache Doris·StarRocks — 그 외의 풍경
8.1 Algolia — SaaS 사이트 검색의 여전한 1위
Algolia는 셀프호스트 옵션이 없다. SaaS로만 제공된다. 그게 강점이자 약점.
- 강점: 매우 빠른 응답(글로벌 엣지 CDN), 운영 부담 0, InstantSearch UI 키트가 가장 성숙.
- 약점: 비용이 빠르게 커짐(record 수·쿼리 수 기반), 데이터 sovereignty 제약, 셀프호스트 불가.
언제 고르는가 — 트래픽이 적고 빠르게 출시해야 하는 in-app 검색, 사이트 검색·블로그 검색. 트래픽·record 수가 커지면 Meilisearch·Typesense로 마이그레이션하는 패턴이 흔하다.
8.2 Sonic — 극단적으로 가벼운 자동완성
Sonic은 Rust로 작성된 극단적으로 가벼운 검색 엔진이다. "자동완성·suggest"에 특화. SQLite 같은 인덱스 파일에 메모리 사용량은 거의 없는 수준.
- 강점: 매우 가벼움, 시작이 빠름.
- 약점: 풀텍스트 검색이 단순함, 페이셋·하이라이트가 제한적, 벡터 없음.
언제 고르는가 — 검색이 거의 자동완성이고, 메인 검색은 다른 도구가 처리할 때. 사실 2026년 기준 거의 모든 자동완성을 Meilisearch·Typesense가 잘 처리하기 때문에 Sonic의 영역은 작아진 편.
8.3 Apache Doris·StarRocks — OLAP가 검색을 잠식하다
Doris·StarRocks·ClickHouse 같은 컬럼형 OLAP가 inverted index·텍스트 검색을 지원하기 시작하면서 "분석 데이터에서 검색도 같이"라는 새 시나리오가 열렸다. 특히 로그·이벤트 데이터처럼 분석과 검색이 같은 데이터에 일어나는 경우에 매력적.
- 강점: 한 시스템에 분석과 검색.
- 약점: 풀텍스트 검색의 매끄러움(랭킹·동의어·페이셋)은 ES만큼 성숙하지 않음.
언제 고르는가 — 분석이 핵심이고 검색은 부가. 메인 사이트 검색을 이걸로 돌리는 건 아직 무리.
9장 · Hybrid Search — 2026년의 기본값
"풀텍스트 검색 vs 벡터 DB"의 이분법은 옛말이다. 2026년의 검색은 거의 항상 hybrid다. 그 구조를 풀어 쓴다.
9.1 hybrid의 세 층
1. retrieval (1차 검색)
- BM25 (풀텍스트, lexical match)
- Dense vector (의미 기반, embedding ANN)
- 두 결과를 RRF 또는 가중합으로 결합
2. reranking (2차 정렬)
- cross-encoder 또는 ColBERT 같은 모델
- 상위 50~200개 결과만 다시 정렬
- 비싸지만 품질에 크게 기여
3. business logic (3차 정렬)
- 인기도·최신성·개인화·비즈니스 규칙
이 세 층을 어떻게 구현하는가가 엔진별로 다르다.
9.2 RRF (Reciprocal Rank Fusion) — hybrid의 표준 결합
두 개의 ranked list(BM25 결과·벡터 결과)를 어떻게 합치는가. 가장 흔한 방법이 RRF.
RRF_score(d) = sum( 1 / (k + rank_i(d)) ) for each ranker i
k는 보통 60. 단순하지만 매우 견고. ES·OpenSearch·Vespa·Meilisearch·Typesense 모두 RRF 또는 그 변형을 지원.
9.3 Reranker — Cohere Rerank·Voyage·ColBERT
- Cohere Rerank — Cohere가 학습한 cross-encoder. API로 호출. 가격은 query당 과금. 가장 보편적인 선택.
- Voyage AI rerankers — voyage-rerank 시리즈. Cohere와 직접 경쟁. 일부 도메인에서 더 좋음.
- Vespa의 ColBERTv2 — late interaction 방식. 모델이 인덱스에 임베딩되어 reranker가 외부 API에 의존하지 않음.
- 오픈소스 rerankers —
bge-reranker·mxbai-rerank·jina-rerank. 자체 호스트.
reranking은 보통 retrieval 결과의 상위 50~200개에만 적용한다. 그 이상은 비용이 폭발.
9.4 hybrid 지원 비교 표
| 도구 | BM25 | dense vector | RRF | 외부 reranker 통합 | ColBERT/late-interaction |
|---|---|---|---|---|---|
| Elasticsearch | O | O (HNSW) | O | 직접 호출 | 제한적 |
| OpenSearch | O | O (k-NN) | O | 직접 호출 | 제한적 |
| Vespa | O | O (HNSW·기타) | O | 인덱스 내장 가능 | 1군 시민 |
| Meilisearch | O | O | semanticRatio | embedder 통합 | 없음 |
| Typesense | O | O | alpha | 직접 호출 | 없음 |
| Quickwit | O | 제한적 | - | - | 없음 |
| Weaviate | 제한적 | O | hybrid 쿼리 | 모듈 | 없음 |
| Qdrant | sparse | O | RRF | 외부 | 제한적 |
10장 · 풀텍스트 vs 벡터 DB vs 둘 다 — 결정 프레임워크
10.1 풀텍스트만으로 충분한 경우
- 상품 카탈로그 — SKU·이름·태그가 정확하게 일치. 의미 검색 필요성이 낮음.
- 로그·트레이스 — 정확한 키워드·식별자 매칭이 핵심.
- 개발자 도구의 검색 — 코드·식별자·정확 매칭.
→ Meilisearch·Typesense·Quickwit·Elasticsearch·OpenSearch 중 시나리오에 맞는 것.
10.2 벡터만으로 충분한 경우
거의 없다. 순수 벡터 검색은 짧은 쿼리·정확 매칭·식별자 검색에 약하다. 키워드 검색이 동시에 가능한 환경이 거의 항상 좋다.
예외 — 이미지·오디오·비디오 유사도 검색처럼 텍스트 인덱스가 없는 경우. 이때는 Pinecone·Qdrant·Milvus·Weaviate·LanceDB 같은 순수 벡터 DB가 자연스러움.
10.3 hybrid가 정답인 경우 (대부분)
- 사이트 검색의 의미 확장 — "blue runners" → 운동화 검색.
- RAG 검색 — 사용자 질문에서 문맥 문서 가져오기.
- 사내 문서·지식 베이스 검색 — 동의어가 많고 키워드가 변동적.
- 추천 시스템의 1단계 candidate 생성.
→ Vespa·Elasticsearch·OpenSearch·Meilisearch hybrid·Typesense hybrid 중 시나리오와 운영 부담 균형으로.
11장 · 능력 매트릭스 — 한눈에 보는 비교
| 능력 | Elasticsearch | OpenSearch | Meilisearch | Typesense | Quickwit | Vespa | Algolia |
|---|---|---|---|---|---|---|---|
| 풀텍스트 (BM25/유사) | 매우 좋음 | 매우 좋음 | 좋음 | 좋음 | 좋음 | 좋음 | 매우 좋음 |
| 벡터 검색 | 좋음 (HNSW) | 좋음 (k-NN) | 좋음 | 좋음 | 제한적 | 매우 좋음 | 부가 |
| hybrid 검색 | O (RRF) | O (RRF) | O (ratio) | O (alpha) | 제한적 | 매우 매끄러움 | O |
| Reranker 통합 | 외부 호출 | 외부 호출 | embedder | 외부 호출 | - | 인덱스 내장 | 일부 |
| 분산 | 매우 좋음 | 매우 좋음 | 보통 | 좋음 | 좋음 (S3) | 매우 좋음 | SaaS only |
| 로그·시계열 | 좋음 | 좋음 | 부적합 | 부적합 | 매우 좋음 | 부적합 | 부적합 |
| in-app/site 검색 | 좋음 | 좋음 | 매우 좋음 | 매우 좋음 | 부적합 | 좋음(과함) | 매우 좋음 |
| RAG retrieval | 좋음 | 좋음 | 보통~좋음 | 보통~좋음 | 부적합 | 매우 좋음 | 보통 |
| 운영 복잡도 | 높음 | 높음 | 매우 낮음 | 낮음 | 중간 | 매우 높음 | SaaS only |
| 비용 | 비쌈 (hot tier) | 비쌈 | 저렴 | 저렴 | 매우 저렴 (S3) | 비쌈 | 사용량 폭증시 비쌈 |
| 라이선스 | AGPL+ELv2 | Apache 2.0 | MIT | GPL/SSPL | Apache 2.0 | Apache 2.0 | proprietary |
12장 · 시나리오별 권장 — in-app·로그·RAG
세 시나리오를 결정 트리로 푼다.
12.1 In-app 검색 (사이트·상품·문서)
- 트래픽 적고 빨리 출시: Algolia
- 셀프호스트 원함, 단순: Meilisearch
- 셀프호스트 원함, multi-tenant: Typesense
- 이미 ES/OS 있고 운영 가능: Elasticsearch / OpenSearch
- 검색이 ML로 ranking되어야 함: Vespa (운영 부담 감수)
12.2 로그·observability
- 비용 우선, 데이터 양 큼: Quickwit (셀프호스트)
- 매니지드, AWS: Amazon OpenSearch Service
- 매니지드, multi-cloud: Elastic Cloud, Grafana Cloud Loki
- Datadog 이미 쓰는 중: Datadog (내부 Quickwit)
12.3 RAG·real-time AI serving
- 1단계 retrieval만 필요: Meilisearch/Typesense hybrid + 외부 reranker
- 본격 ranking pipeline 필요: Vespa
- ES/OS 이미 있고 운영 가능: ES/OS dense_vector + reranker
- 이미지·오디오 위주: Pinecone/Qdrant/Milvus/Weaviate
- Postgres가 진실의 원천: pgvector + 외부 reranker
13장 · 실제 사례 — 어디서 무엇을 쓰는가
- Spotify — Vespa를 검색·추천 핵심에 사용. 노래·아티스트·플레이리스트의 ranking.
- Wikipedia — 검색에 Elasticsearch 기반(CirrusSearch), 일부 추천에 Vespa 실험.
- Pinterest — 추천에 Vespa, 일부 검색에 Elasticsearch.
- HackerNews 검색 — Algolia (오랜 파트너십).
- Datadog 로그 검색 — Quickwit (인수 후 내부 흡수).
- GitHub Code Search — Blackbird (자체 엔진). 2023~2024년에 ES에서 마이그레이션.
- GitLab 검색 — Elasticsearch.
- Notion 검색 — 자체 구현 + ElasticSearch + 벡터 DB hybrid.
- Shopify — Elasticsearch 기반 상품 검색 + 자체 ML ranking.
- 소규모 SaaS — Algolia 또는 Meilisearch·Typesense.
이 분포에서 보이는 패턴.
- 대규모 추천·랭킹 → Vespa 또는 자체 구축.
- 대규모 풀텍스트·로그 → Elasticsearch.
- 로그 전용·비용 최적 → Quickwit/Datadog.
- in-app 검색 → Algolia·Meilisearch·Typesense.
- 이미 AWS → OpenSearch.
14장 · 운영 비용·복잡도 — 진짜 비용은 어디에서 나오는가
엔진 선택에서 가장 자주 무시되는 변수는 운영 비용이다. 라이선스 가격이 아니라 사람의 시간 + 인프라 + 데이터 이동 비용.
14.1 인프라 비용
대략적인 한 자릿수 차이.
- Quickwit (S3 기반) — 1x (기준).
- Meilisearch·Typesense (단일 노드) — 비슷한 수준, 데이터 양에 따라.
- Elasticsearch·OpenSearch (hot tier SSD) — 5~10x (대량 로그).
- Algolia (record당 과금) — 작을 때 저렴, 커지면 매우 비쌈.
- Vespa Cloud — 중간~상위.
14.2 운영 시간 비용
- Algolia — 거의 없음 (SaaS).
- Meilisearch·Typesense — 거의 없음 (단일 바이너리, 운영 단순).
- OpenSearch·Elasticsearch — 큼 (shard·노드·ILM·튜닝).
- Vespa — 매우 큼 (학습 곡선·운영 복잡도).
- Quickwit — 중간 (객체 스토리지 운영 + 자체 운영).
14.3 마이그레이션 비용
- 풀텍스트 → 풀텍스트 (예: ES → Meilisearch) — 보통.
- 풀텍스트 → AI serving (예: ES → Vespa) — 매우 큼.
- in-app → 로그 엔진 (예: Algolia → Quickwit) — 거의 의미 없음 (시나리오가 다름).
라이선스가 비싸 보인다고 엔진을 갈아엎기 전에, 마이그레이션 + 운영 시간 + 학습 비용을 합쳐서 본다.
에필로그 — 검색은 풀텍스트도 벡터도 아니다, 검색이다
2026년 5월의 검색 풍경을 한 줄로 요약하면.
"Elasticsearch가 거인이고, in-app과 로그가 갈라졌고, AI serving은 Vespa가 가져갔고, 모든 곳에 hybrid가 들어왔다."
결정 체크리스트
- 시나리오는 무엇인가? — in-app / 로그 / RAG / 추천 중 하나로 좁힌다.
- 운영 인력 있는가? — 없으면 매니지드 SaaS (Algolia·Elastic Cloud·OpenSearch Service).
- 셀프호스트하면 누가 운영하는가? — 단순함 우선이면 Meilisearch/Typesense.
- AGPL 라이선스 괜찮은가? — 아니면 OpenSearch.
- 로그 비용이 폭발하나? — Quickwit 검토.
- 검색에 ML ranking 모델이 들어가야 하나? — Vespa.
- hybrid가 필요한가? — 거의 항상 yes. 어떤 엔진이 가장 매끄러운지 본다.
- 벡터 DB가 정말 필요한가? — 텍스트가 동반되면 hybrid 엔진이 나음.
안티 패턴
- "Elasticsearch가 다 해준다" — 모든 시나리오를 ES로 — 운영 비용이 빨리 폭발.
- "벡터 DB 하나로 hybrid도 풀텍스트도 다" — 키워드 매칭의 정확도가 무너짐.
- "Quickwit으로 in-app 검색" — 업데이트 약함, 시나리오 미스매치.
- "Vespa로 모든 검색" — 운영 복잡도가 in-app 검색에 비해 압도적.
- "Algolia로 무한히 키운다" — record가 수천만 넘으면 셀프호스트 검토.
- "OS == ES"라고 가정 — 7.10 이후 API·기능 차이가 누적.
- "hybrid 안 쓰고도 충분" — 2026년에 사용자 기대치가 그렇지 않다.
다음 글 예고
다음 후보 — Vespa 첫 90일 — Spotify 스타일 추천 시스템 셀프호스트 가이드, Quickwit 자체 호스트 — S3·Kubernetes 위에 로그 검색 만들기, Meilisearch + Cohere Rerank로 RAG 한 시간만에 만들기.
"검색은 데이터베이스가 아니다. 검색은 사용자 경험이다. 도구는 그 끝에서 골라진다."
— 차세대 검색 엔진 2026, 끝.
참고 / References
- Meilisearch 공식
- Meilisearch GitHub
- Meilisearch Hybrid Search Docs
- Typesense 공식
- Typesense GitHub
- Typesense Vector & Hybrid Search
- Elasticsearch 공식
- Elasticsearch AGPL Announcement (Aug 2024)
- Elasticsearch ESQL Documentation
- Elasticsearch Vector Search
- OpenSearch 공식
- OpenSearch Software Foundation
- OpenSearch k-NN Plugin
- Quickwit GitHub
- Quickwit Datadog Acquisition (Oct 2024)
- Vespa 공식
- Vespa GitHub
- Vespa ColBERT Tutorial
- Algolia 공식
- Sonic GitHub
- Apache Doris
- StarRocks
- ClickHouse Full-Text Search
- Cohere Rerank
- Voyage AI Rerankers
- BGE Reranker
- Reciprocal Rank Fusion Paper
- Weaviate
- Qdrant
- Milvus
- LanceDB
- pgvector
- GitHub Blackbird (Code Search) Engineering Blog
Next-Gen Search Engines 2026 — Meilisearch vs Typesense vs Elasticsearch vs OpenSearch vs Quickwit vs Vespa Deep Dive (The Landscape After Elastic)
Prologue — Elasticsearch Is Still a Giant, But the Landscape Has Scattered
In 2018, the answer to "what search engine should we use?" was essentially one word. Elasticsearch. ELK was Elasticsearch for logs, Elasticsearch for site search, and (somehow) Elasticsearch for recommendations.
In 2026, the same question splits into at least five branches.
- "For in-app search, Meilisearch or Typesense. We don't bother with ES."
- "We moved log search to Quickwit. Just leave it on S3 — the cost is insane."
- "We went to OpenSearch because of Elastic's license. On AWS it's natural."
- "Recommendation, RAG, real-time AI serving — Vespa. Nothing else competes."
- "Still Elasticsearch. v3 license is fine and ESQL is good."
This post compares the search engines honestly as of May 2026. The strengths and weaknesses of each, the reality of hybrid search (full-text + vector + reranker) that has entered every engine, and a decision framework for "when to pick what."
One-line spoiler: The "full-text vs vector" dichotomy is dead. The 2026 answer is almost always hybrid. The question is who makes hybrid the smoothest.
1. The Landscape — Seven Engines Plus Some
Let's draw the map first, so categories don't collapse.
| Category | Engine | One line |
|---|---|---|
| in-app / site search (simple) | Meilisearch, Typesense | Rust/C++, lightweight, self-host friendly |
| general-purpose search and analytics | Elasticsearch, OpenSearch | the giant plus the AWS fork |
| log / observability search | Quickwit, Loki, Elasticsearch | S3-based is the new shape |
| AI-serving search | Vespa | real-time ranking, tensors, ML are first-class |
| SaaS site search | Algolia | hosted-only, very fast |
| ultra-lightweight | Sonic | autocomplete-tier, Rust |
| search + analytics blur | Apache Doris, StarRocks, ClickHouse | OLAP encroaches on search |
| pure vector DBs | Pinecone, Weaviate, Qdrant, Milvus, LanceDB | covered separately |
Most people don't evaluate all of these at once. With three scenarios — in-app search, log search, RAG search — the candidate list narrows naturally.
- In-app search — site, product, document search. Meilisearch, Typesense, Algolia, Elasticsearch, OpenSearch.
- Log / observability — traces, metrics, logs. Quickwit, Elasticsearch, OpenSearch, Loki.
- RAG / real-time AI — embeddings + full-text + reranker. Vespa, Elasticsearch, OpenSearch, Weaviate, Qdrant, pgvector, plus Meilisearch hybrid.
2. Elasticsearch — The Giant Is Alive
Elasticsearch is not dead. In 2024 and 2025 it fired back in two ways.
2.1 License — From SSPL / Elastic License v2 to AGPL / Elastic v3
In late 2024, Elastic re-opened Elasticsearch and Kibana under AGPL v3 (alongside Elastic License v2). That decision was a clear signal aimed at the OpenSearch camp, and it revived energy in OSS-friendly clouds — Bonsai, Elastic Cloud, and self-hosting. It does not mean AWS managed Elasticsearch comes back — AWS has fully committed to OpenSearch.
The licensing essentials.
- AGPL v3 — real OSS. But if you host it as a service, you must publish modifications.
- Elastic License v2 — free unless you resell it as a managed SaaS.
- Either/or — users pick one of the two.
2.2 ESQL — A New SQL-Like Query Language
In Elasticsearch 8.11+, ESQL (Elasticsearch Query Language) went GA. Instead of writing Lucene's query DSL directly, you write a pipe-based SQL-ish syntax that does the same job.
FROM logs-*
| WHERE @timestamp > NOW() - 1 hour AND http.status >= 500
| STATS count(*) BY service.name
| SORT count DESC
| LIMIT 10
ESQL's meaning is simple. "For logs and metrics, Elasticsearch moves closer to OLAP" — a surface that can compete with Apache Doris and ClickHouse. ESQL uses a path optimized for stats and aggregations rather than the inverted index.
2.3 Vector Search and Hybrid as First-Class
Since 8.x late, dense vector fields and HNSW indexes, plus BM25 + kNN hybrid search, are standard features. learning_to_rank and ELSER (Elastic's trained sparse embeddings) are available too, making ES a respectable option to sit at the center of a RAG pipeline without a separate vector DB.
2.4 Elasticsearch Strengths and Weaknesses
- Strengths: works for every scenario, rich ecosystem (Kibana, Logstash, Beats, Fleet, APM), 8.x hybrid and ESQL.
- Weaknesses: operational complexity (JVM, shards, replicas, node tuning), cost, cold-data spend. Keeping all log data on hot tier gets scary fast.
3. OpenSearch — Politics and Engineering of the AWS Fork
OpenSearch, forked by AWS in 2021 in reaction to the SSPL change, is no longer a "fork" after five years — it's its own project. As of 2026.
- Governance — In September 2024, AWS moved OpenSearch to the OpenSearch Software Foundation under the Linux Foundation. SAP, Uber, Aiven, Atlassian joined as founding members. The change matters: it breaks the "AWS-only" perception and creates multi-vendor governance.
- Compatibility — OpenSearch split from Elasticsearch 7.10. Since then API compatibility is no longer 1:1. At the client-library level, much still works on both, though.
- Vector —
opensearch-knnplugin, HNSW, IVF, k-NN. Faiss and Lucene back-ends are selectable. - OpenSearch Dashboards — Kibana fork. Feature pace lags Kibana but is catching up.
Two common reasons to pick OpenSearch.
- You live on AWS and want managed search — Amazon OpenSearch Service is the natural pick.
- You need to avoid Elastic License v2's SaaS resale restriction — managed-search vendors whose product itself exposes a search engine.
For most in-app and log scenarios, ES and OpenSearch are roughly feature-equivalent. New ES features like ESQL arrive in OpenSearch in a different shape (PPL — Piped Processing Language), so once you've written code against one query language, switching costs are real.
4. Meilisearch — Minimalism in Rust
Meilisearch is a Rust-written search engine specialized for in-app search. As of May 2026 it's on the v1.13+ line. One line: "Algolia-like experience, self-hosted."
4.1 Why People Love It
- Single binary — a single static Rust binary. No JVM, no dependencies.
- Near-zero-config start — run
meilisearch, POST JSON documents, search immediately. - Typo tolerance, prefix, highlighting, facets, synonyms — almost everything an in-app search needs is built in.
- Smooth JS, React, Vue SDKs — with tools like InstantMeiliSearch, you can wire UI in five minutes.
4.2 The 2026 Additions — Vector and Hybrid
Meilisearch introduced dense vector search in v1.6, and through 2025 embeddings, rerankers, and hybrid stabilized.
// Meilisearch 1.x — hybrid search
const results = await client.index('products').search('blue runners', {
hybrid: {
embedder: 'openai',
semanticRatio: 0.7,
},
limit: 20,
})
semanticRatio: 0.7 is "70 percent vector, 30 percent BM25." Zero is full-text only, one is vector only.
4.3 Meilisearch Strengths and Weaknesses
- Strengths: simplest operations, fastest start, almost everything for in-app search is built in, edge and self-host friendly.
- Weaknesses: distributed and sharding are less mature than ES (multi-node clustering is a back-burner concern), unsuited for log or OLAP scenarios, very large single indexes (hundreds of millions of documents+) are more stable on ES.
When to pick it — product catalogs, document search, blog search, small-to-medium in-app search. Almost every case of replacing Algolia with self-hosting.
5. Typesense — Another In-App Powerhouse in C++
Typesense is a search engine written in C++. It targets the same scenarios as Meilisearch with a slightly different philosophy.
5.1 How It Differs From Meilisearch
- Language — Meilisearch in Rust, Typesense in C++. Both single-binary. Performance is comparable.
- Distribution — Typesense supports Raft-based distributed clustering from the start. Multi-node HA was first-class from v0.x.
- Multi-tenancy — many collections per cluster, and scoping each API key to a search scope per collection is smooth. Fits SaaS in-app search well.
- Visualization — Typesense Dashboard isn't Kibana-tier, but the tool itself is simple, so a heavy dashboard isn't needed.
5.2 The 2026 Additions — Conversational, Vector, Hybrid
Typesense added vector search, hybrid, and natural-language search from v0.25+. "Conversational search" — an endpoint that answers natural-language questions directly via LLMs — went GA in v28.x.
const result = await client.collections('products').documents().search({
q: 'red running shoes under 100',
query_by: 'name,description,embedding',
vector_query: 'embedding:([], k: 50, alpha: 0.4)',
})
alpha: 0.4 is the same idea as Meilisearch's semanticRatio — the weight between full-text and vector.
5.3 Typesense Strengths and Weaknesses
- Strengths: first-class distributed clustering, multi-tenant friendly, very fast response time, well-organized SDKs.
- Weaknesses: community a little smaller than Meilisearch (not small in absolute terms, just relatively), some natural-language and typo-heavy scenarios feel slightly smoother on Meilisearch.
When to pick it — multi-tenant in-app search for SaaS, in-app search that needs distribution from day one.
6. Quickwit — S3-Native Log Search, and the Datadog Acquisition
Quickwit is the most recent big event in the search-engine landscape. A Rust-written log-specialized search engine, with object storage (S3, GCS, Azure Blob) as primary storage — which is the decisive difference from ES.
6.1 Why It Matters — "Just Leave It On S3, The Cost Is Insane"
Anyone who has run ES on logs knows the pain. Keeping time-series on hot tier means endless SSDs, and frozen-tier, snapshot, and ILM settings eat half your ops time.
Quickwit's model is the opposite.
- Index files (splits) stay on S3, and only the parts needed for a query are fetched.
- Compute and storage are fully separated. Search nodes are stateless. Only indexing nodes keep some state.
- The unit cost is S3 pricing — i.e., a single-digit fraction of EBS/SSD.
6.2 The 2024 Datadog Acquisition — What Happened Next
In October 2024 Datadog acquired Quickwit. The market's biggest question post-acquisition was the OSS fate. The 2025–2026 answer: "Maintained, but core development moves deeper into Datadog's internal log and trace systems."
- The OSS itself — stays under Apache 2.0. The GitHub repo is still actively updated.
- The commercial cloud — Quickwit Cloud closed to new signups. Instead, Datadog Managed Logs runs on Quickwit internally.
- Risk for new adopters — post-acquisition, the OSS lost its "official managed" option. If you're confident self-hosting, it's still the best choice. For "I just want it managed without thinking" companies, this is a warning signal.
6.3 Quickwit's Data Model
Two differences from ES.
- Append-only, time-series first — updates are limited. Optimized for logs and traces.
- Schema-less is first-class — accepts JSON straight and indexes it. Dynamic field mapping is smoother than ES.
Queries support an Elasticsearch DSL-like shape, and OpenTelemetry, Jaeger, and Grafana integrations are first-class.
6.4 Quickwit Strengths and Weaknesses
- Strengths: overwhelming cost efficiency via S3-native, optimized for log and trace scenarios, OpenTelemetry / Grafana integration, stateless search nodes.
- Weaknesses: unsuited for in-app search (weak updates), the OSS managed option vanished after the Datadog acquisition, some features (vector, parts of aggregation) are less rich than ES.
When to pick it — log, trace, observability search, putting cold data on S3 to keep the bill sane.
7. Vespa — Real AI-Serving Search
Vespa sits in an interesting place. It started as Yahoo!'s internal search and recommendation infrastructure, was open-sourced in 2017, and spun out from Verizon Media as Vespa.ai in 2023. As of 2026 it's on v8.x.
Spotify, Wikipedia, Pinterest — their search and recommendation systems run on Vespa. What's special.
7.1 The Decisive Differences From Other Engines
- Tensors are first-class — embeddings and multi-dimensional tensors live directly in index, storage, and queries. Vector search is the core, not an add-on.
- Ranking pipeline is first-class — first-phase, second-phase, and global-phase ranking are structural. ONNX and TensorFlow models run directly inside the ranking step.
- Real-time write + serving — indexing and serving share the same nodes. Real-time updates are smooth.
That's why it dominates RAG, recommendation, and real-time AI serving.
7.2 ColBERTv2 — The Reranker Vespa Handles Most Smoothly
ColBERTv2 is the efficient middle ground between dense retrieval and a cross-encoder reranker. It computes late interaction with per-token embeddings, and Vespa makes it first-class — ColBERT tensors are stored directly in the index, and the ranking step does efficient MaxSim computation.
7.3 Vespa Strengths and Weaknesses
- Strengths: real AI-serving search, tensors and embeddings and models are first-class, real-time updates, proven at very large scale.
- Weaknesses: steep learning curve, operational complexity bigger than ES, overkill for small in-app search, ops burden outside Vespa Cloud is real.
When to pick it — the core of a recommendation system, the actual core of RAG, places where both retrieval and ranking are ML-driven.
8. Algolia, Sonic, Apache Doris, StarRocks — The Rest
8.1 Algolia — Still No. 1 in SaaS Site Search
Algolia has no self-hosted option. SaaS only. That's the strength and the weakness.
- Strengths: very fast response (global edge CDN), zero ops burden, the most mature InstantSearch UI kit.
- Weaknesses: cost grows fast (per-record, per-query pricing), data-sovereignty constraints, no self-host.
When to pick it — low-traffic in-app search that ships fast, site or blog search. Once traffic or record count grows, migrating to Meilisearch or Typesense is a common pattern.
8.2 Sonic — Extremely Lightweight Autocomplete
Sonic is a Rust-written extremely lightweight search engine. Specialized for autocomplete / suggest. SQLite-like index file, nearly zero memory footprint.
- Strengths: very lightweight, fast to start.
- Weaknesses: simplistic full-text search, limited facets and highlighting, no vector.
When to pick it — search is essentially autocomplete and a different tool handles main search. In 2026, Meilisearch and Typesense handle most autocomplete well too, so Sonic's space has narrowed.
8.3 Apache Doris, StarRocks — OLAP Eating Into Search
Columnar OLAP engines like Doris, StarRocks, and ClickHouse started supporting inverted indexes and text search, opening a new scenario: "search and analytics on the same data." It's especially attractive for log and event data, where analysis and search hit the same dataset.
- Strengths: one system for analytics and search.
- Weaknesses: the smoothness of full-text search (ranking, synonyms, facets) is not as mature as ES.
When to pick it — analytics is primary and search is secondary. Running main site search on this is still a stretch.
9. Hybrid Search — The 2026 Default
The "full-text vs vector DB" split is over. In 2026, search is almost always hybrid. Here's the structure.
9.1 The Three Layers of Hybrid
1. retrieval (first pass)
- BM25 (full-text, lexical match)
- Dense vector (semantic, embedding ANN)
- Merge the two results via RRF or a weighted sum
2. reranking (second pass)
- A cross-encoder or ColBERT-style model
- Re-rank only the top 50 to 200 results
- Expensive but a big quality lift
3. business logic (third pass)
- Popularity, recency, personalization, business rules
How each engine implements these three layers differs.
9.2 RRF (Reciprocal Rank Fusion) — The Standard Merger for Hybrid
How do you merge two ranked lists (BM25 results and vector results)? The most common method is RRF.
RRF_score(d) = sum( 1 / (k + rank_i(d)) ) for each ranker i
k is usually 60. Simple but very robust. ES, OpenSearch, Vespa, Meilisearch, and Typesense all support RRF or a variant.
9.3 Rerankers — Cohere Rerank, Voyage, ColBERT
- Cohere Rerank — a Cohere-trained cross-encoder. API call. Priced per query. The most common pick.
- Voyage AI rerankers — the voyage-rerank series. Direct competitor to Cohere. Better in some domains.
- Vespa's ColBERTv2 — late-interaction. The model is embedded in the index, so the reranker doesn't depend on an external API.
- Open-source rerankers —
bge-reranker,mxbai-rerank, jina-rerank. Self-hosted.
Reranking usually runs only on the top 50 to 200 retrieved results. Anything more and cost explodes.
9.4 Hybrid Support — Side-by-Side
| Engine | BM25 | dense vector | RRF | external reranker | ColBERT / late-interaction |
|---|---|---|---|---|---|
| Elasticsearch | yes | yes (HNSW) | yes | call yourself | limited |
| OpenSearch | yes | yes (k-NN) | yes | call yourself | limited |
| Vespa | yes | yes (HNSW + more) | yes | in-index possible | first-class |
| Meilisearch | yes | yes | semanticRatio | embedder integration | none |
| Typesense | yes | yes | alpha | call yourself | none |
| Quickwit | yes | limited | - | - | none |
| Weaviate | limited | yes | hybrid query | module | none |
| Qdrant | sparse | yes | RRF | external | limited |
10. Full-Text vs Vector DB vs Both — A Decision Framework
10.1 Full-Text Alone Is Enough When…
- Product catalog — SKUs, names, tags need precise match. Low need for semantic search.
- Logs and traces — exact keyword and identifier match is the core.
- Developer-tool search — code, identifiers, exact match.
→ Meilisearch, Typesense, Quickwit, Elasticsearch, or OpenSearch, depending on the scenario.
10.2 Vector Alone Is Enough When…
Almost never. Pure vector search is weak for short queries, exact matches, and identifier search. An environment with keyword search beside it is almost always better.
Exception — image, audio, video similarity search where no text index exists. Then Pinecone, Qdrant, Milvus, Weaviate, or LanceDB are natural.
10.3 Hybrid Is the Answer (Most of the Time)
- Semantic expansion of site search — "blue runners" → running shoes.
- RAG retrieval — pulling context documents for a user question.
- Internal docs and knowledge-base search — many synonyms, fluid keywords.
- The candidate-generation stage of a recommender.
→ Vespa, Elasticsearch, OpenSearch, Meilisearch hybrid, or Typesense hybrid, balancing scenario vs ops overhead.
11. Capability Matrix — At a Glance
| Capability | Elasticsearch | OpenSearch | Meilisearch | Typesense | Quickwit | Vespa | Algolia |
|---|---|---|---|---|---|---|---|
| Full-text (BM25-ish) | excellent | excellent | good | good | good | good | excellent |
| Vector search | good (HNSW) | good (k-NN) | good | good | limited | excellent | side feature |
| Hybrid search | yes (RRF) | yes (RRF) | yes (ratio) | yes (alpha) | limited | very smooth | yes |
| Reranker integration | external call | external call | embedder | external call | - | in-index | partial |
| Distributed | excellent | excellent | fair | good | good (S3) | excellent | SaaS only |
| Logs / time-series | good | good | unsuited | unsuited | excellent | unsuited | unsuited |
| in-app / site search | good | good | excellent | excellent | unsuited | good (overkill) | excellent |
| RAG retrieval | good | good | fair to good | fair to good | unsuited | excellent | fair |
| Ops complexity | high | high | very low | low | medium | very high | SaaS only |
| Cost | expensive (hot tier) | expensive | cheap | cheap | very cheap (S3) | expensive | expensive at scale |
| License | AGPL + ELv2 | Apache 2.0 | MIT | GPL/SSPL | Apache 2.0 | Apache 2.0 | proprietary |
12. Scenario Recommendations — In-App, Logs, RAG
Three scenarios, each as a tiny decision tree.
12.1 In-App Search (Site, Product, Document)
- Low traffic, ship fast: Algolia
- Self-host, simple: Meilisearch
- Self-host, multi-tenant: Typesense
- ES/OS already in place, ops capable: Elasticsearch / OpenSearch
- Search needs ML ranking: Vespa (accept the ops cost)
12.2 Logs and Observability
- Cost first, large data: Quickwit (self-hosted)
- Managed, AWS: Amazon OpenSearch Service
- Managed, multi-cloud: Elastic Cloud, Grafana Cloud Loki
- Already on Datadog: Datadog (Quickwit underneath)
12.3 RAG and Real-Time AI Serving
- Only first-stage retrieval needed: Meilisearch/Typesense hybrid + external reranker
- Full ranking pipeline needed: Vespa
- ES/OS already in place, ops capable: ES/OS dense_vector + reranker
- Image/audio-first: Pinecone, Qdrant, Milvus, Weaviate
- Postgres is the source of truth: pgvector + external reranker
13. Real Cases — Who Uses What
- Spotify — Vespa at the core of search and recommendation. Ranking for songs, artists, playlists.
- Wikipedia — Elasticsearch-based search (CirrusSearch); some recommendation experimented on Vespa.
- Pinterest — Vespa for recommendation, Elasticsearch for some search.
- HackerNews search — Algolia (long partnership).
- Datadog log search — Quickwit (absorbed after acquisition).
- GitHub Code Search — Blackbird (in-house engine). Migrated off ES in 2023–2024.
- GitLab search — Elasticsearch.
- Notion search — in-house plus Elasticsearch plus vector DB hybrid.
- Shopify — Elasticsearch-based product search plus in-house ML ranking.
- Small SaaS — Algolia, Meilisearch, or Typesense.
Patterns visible in this distribution.
- Large-scale recommendation and ranking — Vespa or in-house.
- Large-scale full-text and logs — Elasticsearch.
- Log-only, cost-optimized — Quickwit / Datadog.
- In-app search — Algolia, Meilisearch, Typesense.
- Already on AWS — OpenSearch.
14. Operating Cost and Complexity — Where the Real Cost Lives
The variable most often ignored in engine choice is operating cost. Not the license sticker, but human time + infrastructure + data movement.
14.1 Infrastructure Cost
Order-of-magnitude differences.
- Quickwit (S3-based) — 1x baseline.
- Meilisearch, Typesense (single node) — similar, depending on data size.
- Elasticsearch, OpenSearch (hot-tier SSD) — 5–10x for large logs.
- Algolia (per-record) — cheap small, very expensive large.
- Vespa Cloud — mid to high.
14.2 Operating Time Cost
- Algolia — basically none (SaaS).
- Meilisearch, Typesense — basically none (single binary, simple ops).
- OpenSearch, Elasticsearch — large (shards, nodes, ILM, tuning).
- Vespa — very large (learning curve, ops complexity).
- Quickwit — medium (object-storage operation plus self-host).
14.3 Migration Cost
- Full-text to full-text (e.g., ES to Meilisearch) — moderate.
- Full-text to AI-serving (e.g., ES to Vespa) — very large.
- In-app to log engine (e.g., Algolia to Quickwit) — nearly meaningless (different scenarios).
Before ripping out an engine because the license looks expensive, add up migration + ops time + learning cost.
Epilogue — Search Is Neither Full-Text Nor Vector, It Is Search
If we summarize May 2026 in one line.
"Elasticsearch is still a giant, in-app and logs split off, AI-serving was taken by Vespa, and hybrid landed in every engine."
Decision Checklist
- What is the scenario? — narrow to one of in-app / logs / RAG / recommendation.
- Do you have operators? — if not, managed SaaS (Algolia, Elastic Cloud, OpenSearch Service).
- If self-hosting, who runs it? — for simplicity, Meilisearch or Typesense.
- Is AGPL acceptable? — if not, OpenSearch.
- Are log costs exploding? — investigate Quickwit.
- Does ranking need ML models? — Vespa.
- Do you need hybrid? — almost always yes. Pick the engine where hybrid is smoothest.
- Do you really need a vector DB? — if text is alongside, a hybrid engine usually beats a pure vector DB.
Anti-Patterns
- "Elasticsearch does it all" — using ES for every scenario blows up ops cost.
- "One vector DB for hybrid and full-text" — keyword-match accuracy collapses.
- "Quickwit for in-app search" — weak updates, scenario mismatch.
- "Vespa for all search" — ops complexity is overwhelming compared to in-app.
- "Algolia at infinite scale" — beyond tens of millions of records, evaluate self-host.
- "OS equals ES" — after 7.10, API and feature drift accumulate.
- "Hybrid isn't necessary" — in 2026 user expectations disagree.
Coming Up
Candidates next — First 90 Days With Vespa — a Spotify-Style Recommender Self-Host Guide, Self-Hosting Quickwit — Log Search on S3 + Kubernetes, RAG in an Hour With Meilisearch + Cohere Rerank.
"Search is not a database. Search is user experience. The tool gets picked at the end of that thought."
— Next-Gen Search Engines 2026, end.
References
- Meilisearch site
- Meilisearch GitHub
- Meilisearch Hybrid Search Docs
- Typesense site
- Typesense GitHub
- Typesense Vector & Hybrid Search
- Elasticsearch site
- Elasticsearch AGPL Announcement (Aug 2024)
- Elasticsearch ESQL Documentation
- Elasticsearch Vector Search
- OpenSearch site
- OpenSearch Software Foundation
- OpenSearch k-NN Plugin
- Quickwit GitHub
- Quickwit Datadog Acquisition (Oct 2024)
- Vespa site
- Vespa GitHub
- Vespa ColBERT Tutorial
- Algolia site
- Sonic GitHub
- Apache Doris
- StarRocks
- ClickHouse Full-Text Search
- Cohere Rerank
- Voyage AI Rerankers
- BGE Reranker
- Reciprocal Rank Fusion Paper
- Weaviate
- Qdrant
- Milvus
- LanceDB
- pgvector
- GitHub Blackbird (Code Search) Engineering Blog