- Elasticsearch – Aggregations and Faceted Search
Aggregations are the other half of Elasticsearch, and the half that turns a search box into a filter panel. Metric, bucket and pipeline aggregations, nesting them, aggregating on keyword rather than text and why that is not optional, and the part most tutorials skip: a facet counted inside its own filter collapses to a single row, so the guest can never switch cities without clearing the filter first.
- Elasticsearch – Sorting Results
Sorting looks trivial until the first field you try refuses. Why sorting on a text field fails and what fielddata has to do with it, tie-breakers and why a sort without one gives unstable pages, missing values, sorting by distance and by script, what happens to _score when you sort by a field, and reading the sort values back off a hit — which is also how search_after paginates past the 10,000-result wall.
- Elasticsearch – Relevance Tuning That Is Not Guesswork
A relevance complaint is never settled by opinion. What BM25 actually computes, reading the _explain output that shows the arithmetic, what a field boost is worth and why ^2 shows up as 4.4, the multi_match types and a real bug one of them caused — “san francisco loft” returning nothing — fuzziness, and folding a rating into a text score with function_score without letting it take over.
- Elasticsearch – bool, Filters and the Filter Cache
How real queries are assembled. The four bool clauses — must, filter, should, must_not — and the distinction that decides both correctness and speed: filter clauses do not score and are cached, must clauses score and never can be. Then term versus terms when a filter panel has two boxes ticked, ranges, exists, and why a filter on a text field quietly matches the wrong things.
- Elasticsearch – The Search API and Query DSL
The read side, in the order you need it. The anatomy of a response, match versus term and the single most common beginner bug hiding in that difference, multi_match across fields, _source filtering, pagination and the 10,000-result wall that from + size hits, track_total_hits, and highlighting — including the setting that stops a highlighted fragment from being an XSS hole.