semantic search without your own embedding model
Dense vector search requires an embedding model, an inference pipeline, and usually its own GPU infrastructure before the very first semantic query can even be answered. For many teams that exact hurdle is the reason semantic search gets shelved despite its benefits. ELSER, short for Elastic Learned Sparse EncodeR, takes a different approach: instead of turning text into a dense vector of several hundred numbers, the model produces a weighted list of relevant terms, comparable to an automatically expanded and weighted word list. The result can be searched with the same inverted index structures Elasticsearch already uses for classic text search. This article explains how ELSER works technically, how sparse vectors differ from dense vectors, and what practical product search adoption looks like without in-house machine learning infrastructure.
Table of Contents
- 1. The hurdle of classic dense vector approaches
- 2. How ELSER turns text into weighted terms
- 3. The sparse_vector field type and the inference mapping
- 4. The difference from dense vector approaches in detail
- 5. The search request: the sparse_vector query
- 6. Practical use for product search without in-house ML infrastructure
- 7. Multilinguality and the limits of ELSER
- 8. Combining with classic BM25 search in one query
- 9. Operating cost, licensing, and realistic expectations
- 10. Summary
- 11. FAQ
1. The hurdle of classic dense vector approaches
To run dense vector search in production, a team first has to pick or train a suitable embedding model, evaluate it for the shop's language and domain, and then operate an inference pipeline that computes new embeddings on every product change and on every search query. For many classic backend teams in e-commerce that is unfamiliar territory, demanding in-house ML know-how, additional server infrastructure, and ongoing maintenance.
ELSER lowers that hurdle considerably, because the model can run directly inside Elasticsearch as an inference endpoint, without a separate GPU server or external model hosting solution. The model comes pretrained and does not need to be fine tuned on domain specific data to deliver usable results, which drastically simplifies the entry point for teams without their own ML infrastructure.
2. How ELSER turns text into weighted terms
ELSER analyzes an input text and produces a list of terms with associated weights, and these terms do not necessarily have to appear in the original text at all. A product description containing the word running shoe can, for example, automatically be enriched with related weighted terms like sport, jogging, or fitness, because the model learned during training which terms are semantically related.
This term expansion happens fully automatically and replaces much of the work that used to go into manually maintained synonym lists. Conceptually the result is a kind of weighted bag of words representation, where every term carries a numeric weight expressing its relevance to the original text, similar to TF-IDF weights, but semantically enriched instead of purely statistically derived.
3. The sparse_vector field type and the inference mapping
In Elasticsearch, the ELSER output is stored in the sparse_vector field type, which internally functions as a set of term weight pairs and technically relies on the same inverted index Elasticsearch already uses for classic full text search. To apply ELSER automatically during indexing, you set up an ingest pipeline with an inference processor that runs every document through the ELSER model before it is stored.
This close technical relationship to the classic inverted index structure is the decisive advantage over dense vectors: no additional HNSW graph is needed, and search runs through the same, years proven and well optimized mechanisms as a normal BM25 query, just with semantically enriched terms instead of purely original words.
PUT _ingest/pipeline/elser-product-pipeline
{
"processors": [
{
"inference": {
"model_id": ".elser_model_2",
"input_output": {
"input_field": "description",
"output_field": "description_sparse"
}
}
}
]
}
4. The difference from dense vector approaches in detail
While a dense vector consists of several hundred to several thousand continuous numeric values that carry no humanly interpretable meaning on their own, a sparse vector is a manageable list of concrete terms with weights that can be directly understood. This interpretability makes debugging search results much easier, since you can see exactly which terms drove a match, whereas with dense vectors only the distance in space remains as a black box result.
The search strategy also differs technically: dense vector search uses kNN with a graph algorithm like HNSW, while sparse vector search uses an adapted scoring function based on the inverted index structure, conceptually similar to BM25. That also means sparse vector search can be combined with classic text search in a single query, without having to merge two completely separate search mechanisms.
5. The search request: the sparse_vector query
To run a sparse vector search, you pass the raw query text to the sparse_vector query. Elasticsearch automatically runs that text through the same ELSER model, generates the weighted terms for the query, and compares them against the terms stored at indexing time. The developer does not have to worry about manual vector computation, unlike dense vector search, where the query vector typically has to be computed outside Elasticsearch.
This built-in inference at query time is one of the main practical advantages of ELSER: a backend team can run semantic search entirely inside Elasticsearch, without building an additional application that converts query text into vectors before sending it to Elasticsearch.
GET products/_search
{
"query": {
"sparse_vector": {
"field": "description_sparse",
"inference_id": ".elser_model_2",
"query": "quiet stand mixer for the kitchen"
}
}
}
6. Practical use for product search without in-house ML infrastructure
For a Magento based storefront, adopting ELSER concretely means no separate Python environment, no GPU server, and no in-house model maintenance are needed. The entire inference process runs inside the Elasticsearch or OpenSearch cluster, and integration is limited to setting up the ingest pipeline and adjusting the search query in the existing search module.
The resource requirements of the ELSER model itself should not be underestimated though: the model needs noticeable additional memory and compute on the cluster's ingest nodes, so realistic capacity planning ahead of production makes sense, especially when large product catalogs across several languages need to be indexed at once.
7. Multilinguality and the limits of ELSER
The original ELSER model generation was primarily trained on English language text, which is an important practical constraint for a German language Magento shop. Newer ELSER model versions expand language coverage, but before going to production on a non English catalog it is worth specifically testing how well term expansion actually performs for the target language.
Another practical point is that ELSER, as a pretrained model, has no knowledge of domain specific terminology that plays a central role in a niche catalog, for example highly specialized B2B jargon. For such cases, combining classic text search with synonym lists and sparse vector search often remains the more robust choice, rather than relying on ELSER exclusively.
8. Combining with classic BM25 search in one query
Because sparse vector search runs on the same inverted index structure as BM25, it can be combined technically without much friction inside a bool query with classic match queries, each with its own weight. That allows an approach where exact term matches still carry strong weight, while the semantic expansion adds additional, topically relevant results that would have been lost with pure text search.
In practice it pays off to calibrate the weighting between the BM25 share and the sparse vector share against concrete, documented search queries from the shop's analytics data, rather than adopting generic default weights, since the optimal ratio can differ significantly depending on the assortment and typical customer search behavior.
9. Operating cost, licensing, and realistic expectations
ELSER is part of Elastic's commercial feature set and requires a corresponding license tier, which should be factored into cost planning early on for a planned adoption, especially when considering a move to OpenSearch, where ELSER is not available in this form and alternative models or in-house embedding pipelines become necessary. This licensing dependency is a key difference from self hosted dense vector models, which can generally be deployed on either platform.
Realistically, ELSER does not replace classic text search entirely, but adds a semantic component that shows its value especially for vague or paraphrased search queries. For exact article number, SKU, or model number searches, classic text search remains the more reliable and faster choice, which is why a thoughtful combination of both approaches is the most pragmatic path.
| Criterion | Dense vector (own model) | Sparse vector (ELSER) | Practical relevance |
|---|---|---|---|
| ML infrastructure | Own model, often needs a GPU | Runs as an inference endpoint inside Elasticsearch | ELSER lowers the entry hurdle significantly |
| Interpretability | Black box numeric vector | Traceable weighted terms | Sparse vector eases debugging |
| Search mechanism | kNN with HNSW graph | Adapted scoring on the inverted index | Sparse vector combines easily with BM25 |
| Language coverage | Model choice is free | Historically primarily English, expanding | Test per target language before adoption |
| Licensing | Model dependent, often free | Commercial Elastic feature | Relevant to check before an OpenSearch move |
Mironsoft
Search index setup, relevance tuning, and Magento search
Magento search that shows the wrong products first?
We set up Elasticsearch or OpenSearch for Magento cleanly, tune relevance and facets to the actual catalog, and optimize indexing processes for large catalogs.
Relevance Tuning
Match search results and facets to actual customer needs.
Search Migration
Guide a clean migration from Solr or MySQL search to Elasticsearch/OpenSearch.
Index Performance
Make indexing processes for large catalogs reliable and performant.
10. Summary
Sparse Vector Search With ELSER: The Essentials at a Glance
Core principle
ELSER automatically turns text into a weighted list of relevant terms instead of producing a dense numeric vector, using the inverted index structure to do so.
Practical advantage
No in-house ML infrastructure needed, the model runs as an inference endpoint directly inside Elasticsearch for both indexing and querying.
Limits
Historically trained primarily on English, has no knowledge of domain specific terminology, and is tied to a commercial Elastic license.
Recommendation
ELSER meaningfully complements classic BM25 search for paraphrased queries, but does not replace it entirely, especially not for exact SKU searches.