Tacnode™
Back to Blog
Data Engineering

Elasticsearch Alternatives (2026): Ranked by Workload

Elasticsearch runs four different jobs: log search, site search, vector search, and search inside live decisions. Each job has its own best alternative. Here are ten Elasticsearch alternatives, from OpenSearch and Grafana Loki to Typesense, pgvector and Vespa, sorted by the workload you’re actually running.

Alex Kimball
Alex Kimball
Product Marketing
18 min read
A magnifying glass held over a moving stream of data, with the records inside the lens highlighted: search over data that changes

Why Teams Look for Elasticsearch Alternatives

Elasticsearch alternatives usually come up for one of four reasons: licensing (Elastic left Apache 2.0 in 2021), cost and operational load at log scale, the weight of running a cluster just to power a search box, or index sync lag when search feeds a live decision. Each reason points to a different category of replacement.

Licensing. In January 2021 Elastic moved Elasticsearch and Kibana from Apache 2.0 to a dual Elastic License / SSPL model starting with version 7.11, per Elastic’s own announcement. Neither license is OSI-approved, so legal teams at many companies stopped treating Elasticsearch as open source. Elastic added AGPLv3 as a third option in 2024, which we cover in the OpenSearch section below.

Cost and operations at log scale. Elasticsearch builds an inverted index over every field you map. That is what makes arbitrary full-text queries fast, and it is also why log clusters get expensive: the index, replicas and hot-tier storage grow with every gigabyte you ingest. Teams running observability at high volume are the largest group looking for Elasticsearch alternatives for logs.

Too much cluster for a search box. A product catalog of a few hundred thousand records doesn’t need shard planning, JVM heap tuning and a cluster to watch. Teams that want typo tolerance, facets and instant results often find a smaller engine or a hosted API is less work.

Index sync lag. Elasticsearch is almost never the source of truth. Data lives in Postgres, MySQL or a service’s own store and gets copied to the index by a sync job, CDC pipeline or dual write. For a search page, a few seconds of lag is fine. For a decision that uses search results as context, the lag means the decision is working from a copy that no longer matches the source. That’s the workload most lists miss, and it gets its own section below.

A map from the four reasons teams leave Elasticsearch to the category of alternative each one points to. Licensing points to the same workload under a different license: OpenSearch, or Elasticsearch under AGPLv3. Cost at log scale points to log and observability search: Grafana Loki, ClickHouse-based stacks and OpenObserve. Too much cluster for a search box points to site and app search: Algolia, Typesense and Meilisearch. Index sync lag, where the index lags the source of truth, points to search inside a live decision: full-text, vector and SQL over one snapshot of current state. Changing the license alone leaves the other three reasons where they were.

How to Choose: What Is Elasticsearch Doing for You?

Before you compare Elastic competitors feature by feature, name the job. The short version:

  1. 1.Log and observability search. Ingest-heavy, query-light, append-only, retention-driven cost. Look at OpenSearch, Grafana Loki, ClickHouse-based stacks, OpenObserve.
  2. 2.Site and app search. Small-to-medium corpus, relevance tuning, typo tolerance, facets, instant results. Look at Algolia, Typesense, Meilisearch.
  3. 3.Vector and hybrid search. Embeddings plus keywords for semantic search and RAG. Look at Postgres with pgvector, Vespa, dedicated vector databases.
  4. 4.Search inside a live decision or agent step. Full-text plus vector plus filters plus aggregates over data that changes by the second, read by an automated decision or an agent. Look at the Tacnode Context Lake™.
  5. 5.Just the license. Same workload, you only need to leave ELv2 or SSPL. Look at OpenSearch, or Elasticsearch under AGPLv3.

Most companies run more than one of these on the same cluster. The right alternative for your logs is rarely the right one for your product search.

Elasticsearch vs OpenSearch: The License History and the Fork

OpenSearch is the most searched Elasticsearch alternative, and it exists because of the 2021 license change.

What happened. After Elastic’s January 2021 license change, AWS forked the last Apache 2.0 release. According to the OpenSearch FAQ, OpenSearch is derived from Elasticsearch 7.10.2 and OpenSearch Dashboards from Kibana 7.10.2, and all software in the project is released under Apache 2.0. Amazon Elasticsearch Service was renamed Amazon OpenSearch Service in 2021, and the managed service still supports legacy Elasticsearch OSS versions up to 7.10.

Governance. In September 2024 the Linux Foundation announced the OpenSearch Software Foundation, moving the project out of AWS control. OpenSearch 3.0, the first major release under the foundation, shipped in 2025 on Apache Lucene 10 with a focus on vector search performance.

Elastic’s response. In August 2024 Elastic announced it would add AGPLv3 as a license option. Elastic’s licensing FAQ now lists three options for the source code (ELv2, SSPL 1.0 and AGPLv3), with the default distribution still under ELv2. So “Elasticsearch isn’t open source” is no longer strictly true, but AGPLv3 has copyleft terms that some legal teams avoid, and features in the default distribution are split across free and paid tiers.

How they differ in 2026. Five years after the fork, the two have diverged. Elasticsearch has pushed ES|QL, semantic_text fields and the ELSER sparse retrieval model. OpenSearch has pushed its own vector engine work, pull-based ingestion and gRPC in 3.0. APIs from the 7.10 era still mostly line up, but newer features don’t carry across, and client libraries have split. Treat a migration as a real project, not a config change.

Pick OpenSearch when you want Apache 2.0 with foundation governance, you’re on AWS and want the managed service, or you’re on a pre-7.11 Elasticsearch cluster and want the least disruptive path forward.

Stay on Elasticsearch when you depend on Elastic-only features (ES|QL, ELSER, Elastic’s security and observability solutions), you’re paying for Elastic Cloud already, or AGPLv3 satisfies your legal team.

Neither fixes workload problems. OpenSearch is the same architecture, so switching changes the license, not log cost, relevance or index lag.

Log and Observability Search: Elasticsearch Alternatives for Logs

Logs are the workload where Elasticsearch costs the most. The question for each alternative is how much it indexes up front and how much it defers to query time.

1. OpenSearch: same model, Apache 2.0

Elasticsearch vs OpenSearch for logs: OpenSearch keeps the full inverted-index model and the Dashboards UI, so Kibana users feel at home. It suits teams whose logging setup works and whose only problem is the license or the AWS relationship.

What it does well: familiar query DSL and dashboards, a managed option on AWS, Apache 2.0 licensing, and a migration path from Elasticsearch 7.x.

Where it’s not the right choice: storage and operating cost are close to Elasticsearch, because indexing everything is the same design decision. If your bill is the problem, look further down this list.

2. Grafana Loki: index labels, not log lines

Elasticsearch vs Grafana Loki: Unlike Elasticsearch, Loki doesn’t build a full-text index. According to the Loki documentation, it “does not index the contents of the logs, but only indexes metadata about your logs as a set of labels for each log stream,” and the log lines are compressed and written as chunks to object storage. Grafana Labs relicensed Loki to AGPLv3 in April 2021.

What it does well: a small index, cheap object storage, and a close fit with Prometheus-style labels and Grafana dashboards. If your team already lives in Grafana, Loki slots in with little friction.

Where it’s not the right choice: searching for an arbitrary string across a wide time range means scanning chunks, not looking up an index. That’s slower than Elasticsearch for needle-in-haystack queries, and it pushes label design onto your team. High-cardinality labels hurt it.

3. ClickHouse-based stacks: columnar logs with SQL

Elasticsearch vs ClickHouse for logs: Unlike Elasticsearch, ClickHouse stores logs in compressed columnar tables and queries them with SQL. ClickHouse Inc. now packages this as ClickStack, which combines ClickHouse, OpenTelemetry ingestion and the HyperDX UI for logs, metrics, traces and session replay. The HyperDX UI accepts both SQL and Lucene-style search syntax.

What it does well: strong compression, fast aggregations across large log volumes, and SQL that analysts already know. It’s a common destination for teams whose Elasticsearch log clusters became a cost problem.

Where it’s not the right choice: ClickHouse is an analytical engine, not a search engine. Relevance scoring and fuzzy text matching aren’t its design center. JOIN-heavy queries and updates are awkward; we cover the tradeoffs in our ClickHouse alternatives guide.

4. OpenObserve: object storage first

Elasticsearch vs OpenObserve: Unlike Elasticsearch, OpenObserve is built in Rust as a single binary, stores data as Parquet on S3-compatible object storage, and covers logs, metrics and traces. The open-source edition is AGPL-3.0, with a separate commercial enterprise edition. The project claims much lower storage cost than Elasticsearch; that figure is the vendor’s own, so test it on your data.

What it does well: a simple deployment, cheap retention on object storage, and an Elasticsearch-compatible _bulk API that existing shippers can point at.

Where it’s not the right choice: it’s a younger project with a smaller ecosystem than the Elastic or Grafana stacks, and the enterprise features sit under a commercial license.

The same team first built ZincSearch, a lightweight Go search engine that still appears on many Elasticsearch alternatives lists; its README now positions it for app search and sends log-search users to OpenObserve.

Site and App Search: Algolia, Typesense, Meilisearch

For a search box on a website or app, the corpus is usually small enough to fit on one machine, and the hard part is relevance: typos, synonyms, facets, ranking rules, and results that update as the user types. These three tools are built for that and skip most of the cluster work.

5. Algolia: hosted search API

Elasticsearch vs Algolia: Unlike Elasticsearch, Algolia is a proprietary hosted search API. You push records and configure ranking in a dashboard; there’s no cluster to run. NeuralSearch combines keyword and vector retrieval in one query.

What it does well: fast time to launch, front-end libraries for instant search UIs, merchandising tools for e-commerce teams, and no infrastructure to manage.

Where it’s not the right choice: pricing scales with records and search requests, which gets expensive at high volume, and NeuralSearch sits on the top tier with custom annual pricing, per Algolia’s pricing page. It’s closed source and SaaS-only, so it’s not an option if data must stay in your own cloud account.

6. Typesense: open source, in memory

Elasticsearch vs Typesense: Unlike Elasticsearch, Typesense is a single C++ binary that keeps its index in RAM. The server is GPL-3.0 licensed, and it supports typo-tolerant keyword search, faceting, and vector search on embeddings from your own models or its built-in ones.

What it does well: low operational load, predictable instant-search behavior, a self-hosted option alongside Typesense Cloud, and a license that’s plain open source.

Where it’s not the right choice: because the index lives in memory, RAM sets the ceiling on corpus size and cost. It’s built for search experiences, not log volumes or complex analytics.

7. Meilisearch: open source, developer-first

Elasticsearch vs Meilisearch: Unlike Elasticsearch, Meilisearch is written in Rust and aimed at search-as-you-type with minimal configuration. Per the Meilisearch documentation, the Community Edition is MIT-licensed and includes full-text and AI-powered search, while the Enterprise Edition (BUSL-1.1) adds sharding and powers Meilisearch Cloud.

What it does well: sensible relevance defaults out of the box, a simple REST API, and hybrid keyword plus semantic search in the free edition.

Where it’s not the right choice: horizontal sharding is an Enterprise Edition feature, so very large corpora push you to the paid license or the cloud. Like Typesense, it targets search UIs, not logs.

Vector and Hybrid Search: pgvector, Vespa, Vector Databases

Elasticsearch supports vectors: dense_vector fields with HNSW indexes, and hybrid queries fused with reciprocal rank fusion. Teams look elsewhere for vector workloads when they want fewer moving parts, tighter ranking control, or retrieval that sits next to their relational data.

8. Postgres + pgvector: vectors next to your rows

Elasticsearch vs pgvector: Unlike Elasticsearch, pgvector adds vector search to the Postgres database you already run. It supports HNSW and IVFFlat indexes and L2, inner product, cosine, L1, Hamming and Jaccard distance, and its README recommends combining it with Postgres full-text search for hybrid search. Our guide to full-text search in PostgreSQL covers the keyword half, and the pgvector tutorial video walks through the vector half.

What it does well: no separate system to sync, transactional writes, SQL filters and joins in the same query as the similarity search, and every Postgres tool you already use.

Where it’s not the right choice: Postgres full-text search lacks some relevance features Elasticsearch has built in (BM25 scoring out of the box, rich analyzers, typo tolerance), and a single Postgres primary sets the ceiling on write and read concurrency. For RAG workloads without heavy freshness or concurrency demands, though, it’s often enough.

9. Vespa: search, vectors and ranking in one serving engine

Elasticsearch vs Vespa: Unlike Elasticsearch, Vespa was built at Yahoo as a serving engine that combines BM25 text search, vector search, structured filtering and machine-learned ranking with tensor math in one query pipeline. It’s Apache 2.0 licensed, with a managed Vespa Cloud.

What it does well: multi-phase ranking with real models inside the engine, real-time document updates, and large-scale deployments in search, recommendation and RAG.

Where it’s not the right choice: Vespa has a steep learning curve. Application packages, schema files and ranking expressions are their own discipline, and a small team with a simple search box will find it heavy.

Dedicated vector databases. Pinecone, Weaviate, Qdrant and Milvus are purpose-built for similarity search, and several now support hybrid keyword plus vector queries. They fit when vectors are the main retrieval pattern and the rest of your data lives elsewhere. They inherit the same sync question as Elasticsearch: embeddings and metadata are copied from a source of truth. Our vector database comparison goes through them one by one.

The Workload Most Lists Miss: Search Inside a Live Decision

Every tool above assumes a person consumes the results: an engineer reading logs, a shopper scanning products, a user reading a RAG answer. The pattern vendor listicles skip: search as one read inside an automated decision or agent step that acts on what comes back.

Some examples:

  • A fraud check runs a full-text match on merchant descriptors, a vector similarity lookup against known fraud patterns, and an aggregate of the card’s spend in the last ten minutes, then approves or declines.
  • A marketplace matching engine filters available inventory by attributes, ranks it by semantic fit, and assigns it, while other requests assign the same inventory at the same time.
  • An AI agent retrieves documents, checks the current state of the account or ticket it’s acting on, and takes an action that the next agent step will read.

In each case the decision needs full-text, vector, structured filters and aggregates together, over data that changes by the second, and the result has to reflect one consistent moment.

Elasticsearch struggles here for structural reasons, not tuning ones. It isn’t the system of record, so data arrives through a sync pipeline that lags the source. Once data arrives, it becomes searchable on the next refresh, which defaults to one second and, on search-idle shards, waits for the next search request. Elasticsearch doesn’t support multi-document transactions, so a related set of updates can be half-visible. And the aggregates and account state the decision also needs usually live in a different system, synced on a different schedule.

The result is a context gap: the decision acts on context that’s incomplete, inconsistent or outdated when it executes. Search results reflect the index as of a few seconds ago, the balance comes from Postgres as of now, and the velocity count from a cache as of the last stream job. Together they describe a state that never existed, and none of the alternatives above changes that on its own, because each covers part of the read while the rest still comes from other systems on other schedules.

10. Tacnode Context Lake™: search over current state, in one snapshot

Elasticsearch vs Tacnode: Unlike Elasticsearch, the Tacnode Context Lake™ isn’t a search index the decision reads alongside its other systems. It holds the decision context itself: full-text search, native vector search and SQL (filters, joins, aggregates) run in the same query, against one coherent snapshot of current state. Source data from the systems you already run arrives by CDC or streams and becomes readable sub-second behind the write. Decision outputs such as verdicts, holds, assignments and agent actions are written back to Tacnode, where they’re ACID-committed and become context for the next decision. It presents the PostgreSQL wire protocol, so Postgres drivers and SQL tooling connect as they would to Postgres.

What it does well:

  • One snapshot, several retrieval patterns. Keyword match, vector similarity, point lookups, range filters and aggregates evaluate together against the same snapshot, so the text results and the account state agree with each other.
  • Sub-second behind the source. Ingested data is readable sub-second behind the write, and derived signals are computed against the same set of ingested events as the raw rows. Our Semantic pillar explains how derived context stays aligned with its source.
  • Decisions write back. Holds, limits, verdicts and agent actions live in Tacnode with ACID guarantees, so two concurrent decisions reading and writing that state don’t both act on the same stale view.
  • Postgres wire protocol. No new query DSL, and existing SQL skills carry over.

Where it’s not the right choice:

  • Log and observability search. High-volume, retention-driven log workloads belong on the log tools above.
  • Site search with merchandising. If you need a hosted instant-search UI, typo tolerance tuned for shoppers and a merchandising dashboard, use Algolia, Typesense or Meilisearch.
  • Search that nothing automated acts on. If a human reads the results and a few seconds of index lag costs nothing, Elasticsearch, OpenSearch or pgvector is simpler.
  • Not a drop-in for the Elasticsearch query DSL. Queries are SQL, so moving from the Elasticsearch DSL means rewriting them.

Best for: fraud and risk checks, marketplace matching, in-session personalization, and AI agents acting on shared state.

Elasticsearch Alternatives Compared

“Synced copy” isn’t a flaw for search pages or logs. It only matters when an automated decision acts on the result.

ToolPrimary workloadLicenseFull-textVectorSource of truth or synced copyBest fit
Elasticsearch (baseline)General search, logs, hybridELv2 / SSPL / AGPLv3Yes, LuceneYesSynced copyMixed search and observability on one platform
OpenSearchLogs, general searchApache 2.0Yes, LuceneYesSynced copySame workload, open license, AWS managed
Grafana LokiLogsAGPLv3Labels only; line content scanned at query timeNoSynced copyLow-cost logs in a Grafana stack
ClickHouse / ClickStackLogs, traces, metricsApache 2.0 (ClickHouse)Basic text matching, not relevance-rankedYesSynced copyHigh-volume observability with SQL
OpenObserveLogs, metrics, tracesAGPL-3.0 / commercialYesNoSynced copyCheap retention on object storage
AlgoliaSite and app searchProprietary SaaSYesYes (NeuralSearch, top tier)Synced copyHosted instant search and merchandising
TypesenseSite and app searchGPL-3.0Yes, typo-tolerantYesSynced copySelf-hosted instant search
MeilisearchSite and app searchMIT (CE) / BUSL-1.1 (EE)Yes, typo-tolerantYesSynced copyDeveloper-first search UIs
Postgres + pgvectorVector and hybridPostgreSQL LicenseYes, Postgres FTSYesSource of truthRAG and hybrid search next to relational data
VespaLarge-scale hybrid rankingApache 2.0Yes, BM25YesSynced copyModel-driven ranking at scale
Tacnode Context Lake™Search inside live decisions and agent stepsCommercialYesYesHolds the decision context; sources arrive sub-second by CDC, decisions write backDecisions that need search, vectors and aggregates over current state

When Elasticsearch Is Still the Right Choice

You run search and observability together. If one team runs logs, APM, security analytics and application search on one platform with one set of skills, replacing Elasticsearch with four specialized tools adds more operational surface than it removes.

You depend on Elastic-specific features. ES|QL, ELSER sparse retrieval, semantic_text fields and Elastic’s security products don’t exist in OpenSearch. If your workflows are built on them, the fork isn’t a like-for-like swap.

Your relevance tuning is mature. Years of analyzers, synonym lists, boosts and query templates are an asset. Rebuilding them elsewhere is a relevance project, not an infrastructure project.

AGPLv3 answers the license question. If the 2021 change was your only reason to leave, check whether the AGPLv3 option satisfies your legal team before planning a migration.

Index lag doesn’t cost you anything. If people read the results, and nothing automated approves, assigns or acts on them within the same second, a one-second refresh and a sync pipeline are fine.

Frequently Asked Questions

ElasticsearchOpenSearchFull-Text SearchVector SearchHybrid SearchLog Analytics
Alex Kimball

Written by Alex Kimball

Former Cockroach Labs. Tells stories about infrastructure that actually make sense.

Fresh Context Newsletter

The argument behind the posts — what breaks when AI acts on stale data, from the team building the Context Lake. About twice a month.

Subscribe on LinkedIn

Ready to see Tacnode Context Lake™ in action?

Book a demo and discover how Tacnode can power your AI-native applications.

Book a Demo