customer stories

From Elasticsearch to Vespa: customer engineering stories

Explore the requirements behind each migration, the engineering decisions involved, and the results achieved.

  • Kleinanzeigen

    Rebuilding homepage recommendations with Vespa, combining clicks, searches, and preferences to deliver a substantial uplift in listing clicks.

    Read the engineering blog
  • Vinted

    Consolidating six Elasticsearch clusters into one Vespa platform and halving server requirements.

    Read the engineering blog
  • Splore

    Moving from Elasticsearch to Vespa to introduce hybrid search and reduce reported search latency from over a second to approximately 20 milliseconds.

    Read the case study

Benchmark

Vespa vs. Elasticsearch: performance benchmark

In a reproducible benchmark on one million e-commerce products, Vespa delivered higher throughput per CPU core than Elasticsearch on every query type tested, and handled updates more efficiently.

  • Hybrid queries: 8.5× higher throughput per CPU core.
  • Vector queries: up to 12.9× higher throughput per CPU core.
  • Lexical queries: 6.5× higher throughput per CPU core.
  • In-place updates: about 4× more efficient.
  • Infrastructure cost: an estimated 5× reduction for a typical deployment.

Tested with Vespa 8.427.7 and Elasticsearch 8.15.2 in November 2024. Results depend on your workload and configuration, so use the report as a starting point for your own tests.

Technical Resources

Technical resources for Elasticsearch users

These are the resources Elasticsearch teams find most useful when evaluating Vespa. Below them, we compare the two platforms capability by capability.

  • Elasticsearch and Vespa: architectural differences

    Understand how the two platforms handle indexing, document updates, query execution, and scaling—and what those differences mean for your application requirements.

    Read the architecture guide
  • Elasticsearch vs. Vespa: performance benchmark

    Examine a reproducible comparison using an e-commerce search application with one million products. Explore query performance, indexing, and updates across the tested workloads and configurations.

    Read the benchmark
  • Benchmark executive summary

    Explore the key performance findings and their implications for infrastructure efficiency and cost in this six-page management summary.

    Read executive summary
  • Vespa terminology for Elasticsearch users

    Map familiar Elasticsearch concepts to Vespa’s application packages, schemas, content nodes, and query processing. Understand where the architectures overlap and differ.

    Explore the terminology guide
  • Planning your migration to Vespa

    Explore a roadmap for moving from Elasticsearch to Vespa, helping you structure your migration planning and identify the decisions ahead.

    Read the migration brief
  • Migrating from Elasticsearch to Vespa with Searchplex

    A technical session on schema mapping, ingestion pipelines, and access control when migrating Elasticsearch workloads to Vespa.

    Watch the session

Comparison

Vespa vs. Elasticsearch: compare capabilities

Vespa runs retrieval, ranking, model inference, and real-time updates as one system, so a single ranking expression can combine lexical, vector, and business signals with your own models. Elasticsearch assembles the same capabilities from retrievers, rescorers, scripts, inference endpoints, and ML nodes, each configured on its own.

Capability
Vespa
Elasticsearch
Retrieval methods
BM25 keyword search, approximate vector search, hybrid search, and structured filters in one query.
BM25 keyword search, approximate vector search, hybrid search, and structured filters. Vector indexes are built per Lucene segment, so query latency rises as segments accumulate between merges.
Hybrid relevance
Lexical, vector, and application signals combined in one ranking expression you define.
Keyword and vector results come from separate retrievers and are merged by rank fusion or a weighted combination, not ranked together with your business signals. Your team picks the normalization and retunes the weights as data changes.
Custom scoring
Rank expressions compiled and evaluated natively over text, vector, tensor, and document features.
function_score covers a few built-in boosts. Anything beyond them needs Painless scripts embedded in each query, which make queries much more expensive across many documents.
Multi-phase ranking
First phase scores every retrieved candidate on each content node, second phase reranks the best per node, global phase reranks the merged results. Candidate counts are set per stage.
Rescorers and rerankers see only a fixed window of top documents on each shard, so relevant documents outside that window never reach your model. Each stage is configured and tuned separately.
Learning to rank
Built in: feature logging, and XGBoost, LightGBM, and ONNX models in any ranking phase.
Models rescore only that per-shard window, and documents outside it keep their original scores. XGBoost and LightGBM models are uploaded through Eland, ONNX ranking models aren’t supported, and the feature requires a paid subscription tier.
Model inference
Embedders and ONNX models run inside the platform, as part of indexing and ranking.
Models run on dedicated ML nodes, on Elastic’s hosted inference service, or in external services such as OpenAI or Cohere. Each is a separate workload to size, secure, and pay for.
Tensors and multi-vector
Native tensor fields and tensor math in ranking. Late interaction such as ColBERT is defined in the rank profile.
No general tensor type, so personalization and multi-signal ranking must be flattened into separate fields and scripts. Late-interaction vectors (rank_vectors) have no ANN index, so scoring runs as a brute-force script over each candidate.
Partial updates
Attribute fields are updated in place and available to filtering and ranking immediately.
Every update rewrites the whole document, so frequently changing fields, such as prices or popularity, add continuous reindexing load. Changes become searchable after a refresh (1 second by default).
Scaling
Data redistributes automatically as nodes are added or removed, with no shard count to plan.
The primary shard count is fixed when an index is created. Changing it requires a split (with the index read-only), a shrink, or a reindex, so an undersized shard plan becomes a migration project later. Shards rebalance across nodes automatically.
Relevance configuration
Versioned rank profiles in the application package, selected per query.
Ranking logic is spread across Query DSL in each request, retriever trees, rescorers, and stored learning-to-rank models, which makes changes harder to version, test, and roll back.
Performance & cost
8.5× higher throughput per CPU core for hybrid queries, up to 12.9× for vector, and 6.5× for lexical, with an estimated 5× lower infrastructure cost, in our published benchmark.
Needed 6.5× to 12.9× more CPU per query than Vespa across the tested workloads (Elasticsearch 8.15.2, November 2024), with the widest gap on vector queries.

Elasticsearch capabilities are as of version 9.x on self-managed and Elastic Cloud Hosted deployments. Some features require paid subscription tiers, and Elastic Cloud Serverless manages shards and refresh differently.

Architecture

Where the architectures differ

For teams moving from Elasticsearch to Vespa, these differences show up in production: fewer systems to run, faster experiments with new ranking ideas, and results that reflect the latest data.

  • Multi-phase ranking in one platform

    Vespa: One rank profile defines every phase, from scoring each match on the content nodes to reranking the merged results, and models can run in any phase.

    Elasticsearch: Custom scoring, learning to rank, and reranking use separate mechanisms (Painless scripts, rescorers, and retrievers), and model reranking only sees a window of top documents on each shard.

  • Hybrid search in a single ranking expression

    Vespa: Lexical and vector relevance combine in the same ranking expression as freshness, popularity, user context, and your own models.

    Elasticsearch: Keyword and vector retrievers return separate result lists, which are then merged by rank fusion or a weighted combination. The merge method, not your business signals, shapes the final ranking.

  • Live data without reindexing

    Vespa: Attribute fields update in place, so a price, stock level, or popularity change is available for filtering and ranking as soon as it is written.

    Elasticsearch: Lucene’s immutable segments mean every update rewrites the whole document, and changes become searchable only after the next refresh. For catalogs and feeds that change constantly, this affects both indexing cost and result freshness.

  • Inference that scales with retrieval

    Vespa: Embedders and ONNX models run within the platform, during indexing and ranking, so retrieval and inference scale together.

    Elasticsearch: Models run on dedicated ML nodes, on Elastic’s hosted inference service, or in external services. Each is a separate workload to deploy, secure, monitor, and pay for.

Smarter product discovery with real-time AI

See a fashion catalog that understands plain-language requests and personalizes results as shoppers interact.

  • Semantic search: results match what the shopper means, not just the words in product titles.
  • Personalization inside ranking: shopper preferences are weighted signals in the same ranking expression as relevance. Elasticsearch typically needs scripts or a separate reranking service for this.
  • Real-time updates: a single like changes the next search immediately, with no wait for a refresh.

RETRIEVAL FOR AGENTS

Building AI agents? Evaluate the retrieval behind each decision.

An agent may search repeatedly as it compares options, checks constraints, and decides what to do next. The relevance and freshness of each result can affect subsequent decisions.

Vespa lets developers combine retrieval paths, select application-defined ranking profiles, and apply machine-learned models across ranking phases. This provides control over both the evidence returned and the computation used to select it.

For agentic applications, evaluate retrieval quality, data freshness, latency, and cost across the complete task, not just a single search.

Choosing a platform

Is Vespa the right Elasticsearch alternative?

  • When Elasticsearch fits

    Your deployment already meets your relevance, freshness, latency, and cost requirements, or you need keyword search alongside log analytics and observability. In those cases, a migration may offer little benefit.

  • When Vespa fits

    Relevance is part of your product’s advantage. Ranking combines text, vectors, business signals, and your own models; inventory, prices, and engagement signals change constantly; and you need to hold tight latency targets while data keeps changing. These needs come together in product discovery, recommendations, and AI agents.

Frequently asked questions

Need more than a quick answer?

If these FAQs don't answer your question, there are several ways to continue:

Learn the fundamentals with our free online training at learn.vespa.ai.

Experience Vespa yourself with a free Vespa Cloud trial.

Watch the Getting Started with Vespa AI Search YouTube video

Contact our team to discuss your application or migration project.
What performance improvements could I see when moving from Elasticsearch to Vespa?
Results depend on your data, queries, ranking models, update rate, and configuration. Vespa’s published 2024 benchmark measured 8.5× higher throughput per CPU core for hybrid queries, up to 12.9× for vector queries, and 6.5× for lexical queries, with about 4× more efficient in-place updates. Use the report as a starting point, then test your own workload against your latency, throughput, and infrastructure requirements.
How does Vespa handle frequently changing data?
Elasticsearch rewrites the whole document on every update and makes changes searchable only after a refresh. Vespa supports continuous updates to searchable data, including in-place updates to in-memory attribute fields without reindexing the whole document. This is particularly useful when prices, inventory, preferences, or engagement signals change frequently and must be available to filtering and ranking.
How do Vespa and Elasticsearch approach scaling?
Elasticsearch fixes each index’s primary shard count at creation, so growth beyond the original plan means splitting, shrinking, or reindexing. Vespa distributes documents in fine-grained buckets and automatically redistributes them as cluster capacity changes. When evaluating either platform, test data growth, query traffic, and update volume together, including how the system behaves when capacity is added or removed.
How does Vespa support AI search and agentic applications?
Vespa combines text, vector, and structured retrieval with programmable multi-phase ranking. Developers can combine relevance signals, perform tensor computations, and execute supported machine-learned models within the ranking pipeline. These capabilities support applications such as recommendations, personalized product discovery, and agents that need relevant, current information across multiple searches.
What operational changes should I expect when migrating to Vespa?
Moving to Vespa introduces a different application model, including schemas, ranking profiles, and deployment configuration. Its automatic data distribution and integrated retrieval, ranking, and model execution can reduce the need for separately managed components. The outcome depends on your architecture: Vinted, for example, consolidated six Elasticsearch clusters into one Vespa platform and halved its server count. Those results reflect one deployment, not a guaranteed migration outcome.
Can Elasticsearch do learning to rank?
Yes, on paid subscription tiers. Its learning-to-rank rescorer runs XGBoost or LightGBM models on a window of top documents in each shard, and documents outside that window keep their original scores. In Vespa, feature logging and GBDT and ONNX models are part of the ranking framework and can run in any phase.

Why consider Vespa as an Elasticsearch alternative?

Vinted, Kleinanzeigen, Perplexity, Spotify, and Yahoo run Vespa in production for AI search, recommendations, and retrieval-augmented generation (RAG). If relevance, hybrid ranking, separate reranking pipelines, slow partial updates, or infrastructure cost are holding back your Elasticsearch application, tell us what you are working on, and we will show you how other teams have solved it.