Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Aggregation'lar ve Facet'li Arama: terms, range, date_histogram, nested ve post_filter
Facet'li aramada arama metni sorguya, seçili filtreler post_filter'a gider ve her facet kendi filtresi hariç diğer seçili filtrelerle sarılır; yoksa seçilen filtre kendi facet'ini boşaltır. Gerçek çıktılarla terms, range, date_histogram, avg ve cardinality, nested ile reverse_nested, Bookstore'un facet'li /books/search endpoint'i, 5 shard'da terms sayılarının yanılması ve doc_count_error_upper_bound, aynı raporun ES|QL karşılığı.
.NET'te Elastic.Clients.Elasticsearch 9: Typed API, Fluent ve Object Initializer, Serialization, Hata Yönetimi ve Test
Elastic.Clients.Elasticsearch 9'da client'ı DI'da singleton ve doğrulanmış options ile kaydeder, sorguları test edilebilir bir builder'da toplar ve davranışı Testcontainers ile gerçek bir Elasticsearch'e karşı test edersin. Gerçek çıktılarla descriptor'lı aramanın index'i atlayıp /_search'e gitmesi, source serializer'da Add yerine Insert, server, transport ve 429 hataları, ES|QL'i metin ve LINQ ile çağırmak ve 9. yazıdaki hatayı yakalayan regresyon testi.
Elasticsearch 8'den 9.x'e ve OpenSearch 3: Yenilikler, Kaldırılanlar ve Hangisini Seçmeli?
Elasticsearch 8'den 9.x'e önce son 8.19'a geçip deprecation uyarılarını temizleyerek ve snapshot alarak yükseltilir; OpenSearch 3 ise çekirdeği ortak ama ayrı yolda giden bir motor ve ayrı bir .NET client istiyor. Gerçek çıktılarla: 8.19'da uyarı veren parametrelerin 9.5'te 400 dönmesi, deprecation API, 8.19 verisini 9.5'te açmak ve geri dönememek, LOOKUP JOIN, Elastic client'ın OpenSearch'ten 406 alması, OpenSearch.Client ile aynı arama ve bir karar tablosu.