Recall Stage vs LTR: am I duplicating logic or losing good results in Elasticsearch?

Hey folks,

I’m building a search pipeline using Elasticsearch + Vector Search + LTR, and I’ve hit a conceptual conflict.

Classic pipeline:

  1. Recall (BM25 / Vector / Hybrid)

  2. LTR (rerank top-K)

  3. Pagination

All good. But here’s where things get messy:


1. Recall doesn’t know what “good” means.

It only fetches candidates.
It doesn’t understand price, discount, margin, conversion but LTR does.

So the fear is:

“What if the good products never make it into the top-K? LTR will never see them.”

How is this measured in practice? Recall@K?


2. Where does business logic belong? Query or LTR?

If I add price/popularity boosting in Recall:

  • feels like I’m duplicating model logic

  • feels like I’m biasing the Recall artificially

  • feels like LTR becomes useless

If I don’t add anything:

  • Recall becomes “blind”

  • good products fall outside top-K

  • meaning LTR becomes pointless

How do you balance this?


3. What’s the real boundary between Recall and Rerank?

The theory says:

  • Recall = don’t miss anything potentially relevant

  • LTR = choose the best among them

But how does this translate into Elasticsearch best practices?


Short version of my questions

  • How do you ensure good items aren’t lost in Recall?

  • How do you measure/tune Recall@K realistically?

  • How much logic should live in the query vs the model?

  • Any recommended pattern from Elastic for hybrid pipelines?

Thanks!