Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
3 posts found #esql
From Elasticsearch 8 to 9.x and OpenSearch 3: What's New, What Was Removed and Which to Choose
Database PART 13

From Elasticsearch 8 to 9.x and OpenSearch 3: What's New, What Was Removed and Which to Choose

You upgrade from Elasticsearch 8 to 9.x by moving to the latest 8.19 first, clearing deprecation warnings and taking a snapshot; OpenSearch 3 shares the core but goes its own way and needs its own .NET client. With real output: parameters that warn on 8.19 returning 400 on 9.5, the deprecation API, opening 8.19 data on 9.5 with no way back, LOOKUP JOIN, the Elastic client getting a 406 from OpenSearch, the same search with OpenSearch.Client, and a decision table.

14 Nov 2026 13 min 18
Elastic.Clients.Elasticsearch 9 in .NET: the Typed API, Fluent vs Object Initializer, Serialization, Error Handling and Testing
Database PART 10

Elastic.Clients.Elasticsearch 9 in .NET: the Typed API, Fluent vs Object Initializer, Serialization, Error Handling and Testing

With Elastic.Clients.Elasticsearch 9 you register the client as a DI singleton with validated options, gather queries in a testable builder, and test behavior against a real Elasticsearch with Testcontainers. With real output: a descriptor search skipping the index and going to /_search, Insert instead of Add in the source serializer, server, transport and 429 errors, calling ES|QL with a string and with LINQ, and the regression test that catches post 9's bug.

14 Nov 2026 13 min 15
Aggregations and Faceted Search: terms, range, date_histogram, nested and post_filter
Database PART 09

Aggregations and Faceted Search: terms, range, date_histogram, nested and post_filter

In faceted search the text goes into the query, selected filters go into post_filter, and each facet is wrapped with every other selected filter but its own; otherwise a selected filter empties its own facet. With real output: terms, range, date_histogram, avg and cardinality, nested with reverse_nested, Bookstore's faceted /books/search endpoint, terms counts going wrong on 5 shards and doc_count_error_upper_bound, and the same report in ES|QL.

14 Nov 2026 12 min 13
Blog Map