Elastic search Aggregations-2

sebnemgurek
3 min readMar 17, 2023

--

Bir önceki medium yazımda yer alan Bucket toplamalarına devam edelim.

  1. Bucket aggregations

Belgeleri gruplandırmak için kullanılır. Bucket aggregations, metric aggregations da olduğu gibi metrikleri alanlar üzerinden hesaplamaz, bunun yerine belge demetleri oluşturur. Her bölüm, geçerli bağlamdaki bir belgenin ona “uyup uymadığını” belirleyen bir ölçütle (toplama türüne bağlı olarak) ilişkilendirilir. Demetlerin kendilerine ek olarak, demet toplamaları ayrıca her bir demete “düşen” belge sayısını da hesaplar ve döndürür.

Şimdi en çok kullanılan Bucket toplamalarını inceleyelim.

· Date range aggregation

Tarih değerleri için ayrılmış bir aralık toplama. Bu toplama ile normal aralık toplaması (range aggregation) arasındaki temel fark, from ve to değerlerinin Date Math ifadelerinde ifade edilebilmesi ve ayrıca from ve to yanıt alanlarının döndürüleceği bir tarih biçimi belirtilebilmesidir. Bu toplamanın her aralık için başlangıç ​​değerini içerdiğini ve bitiş değerini hariç tuttuğunu unutmayalım.

Örnek:

Bu örnekte tarih aralığını bugünden 1 ay önce ve bugünden 1 ay sonra olacak şekilde ikiye ayıralım.

Ben bu örneği 16.03.2023 tarihinde gerçekleştirdim.

now-1M : bize bugünün tarihinden bir ay öncesi tarihi verecektir.

/M : en yakın tarihe yuvarlayacaktır.

now-1M/M sonucunda yeni tarih 01.02.2023 olacaktır.

Başka bir query ile “order_date” alanındaki max tarihinin 2023–04–01T23:45:36.000Z, min tarihinin 2023–03–02T00:04:19.000Z olduğunu bulmuştum. Bu nedenle şubat ayı öncesinde hiçbir veri olmadığı için doc_count sıfır geldi.

from ve to yanıt alanlarının döndürüleceği bir tarih biçimi belirtilebilmesi

Sorguda format parametresini “MM-yyyy” olarak belirtiğimiz için bucket içindeki key alanı bu formatta geldi.

· Histogram aggregation

Belgelerden çıkarılan sayısal değerlere veya sayısal aralık değerlerine uygulanabilen çok gruplu değerler kaynağına dayalı toplama. Değerler üzerinde dinamik olarak sabit boyutlu klasörler oluşturur.

Örnek:

Bu örnekte fiyat alanını 5 aralığa bölmek isteyelim. Toplama işlemi yürütüldüğünde, her belgenin fiyat alanı değerlendirilecek ve en yakın bölüme yuvarlanacaktır. Eğer fiyat 186 EUR ve aralık değeri 250 ise yuvarlama sonucu bu fiyat 0 anahtarıyla ilişkili bölüme düşecektir.

· Date histogram aggregation

Bu çok bölmeli toplama, normal histograma benzer, ancak yalnızca tarih veya tarih aralığı değerleriyle kullanılabilir.

Takvim aralığını “calendar_interval” parametresi ile belirliyoruz. “month“ gibi birim adını veya “1M” gibi tek bir birim miktarı kullanarak takvim aralıklarını belirleyebiliriz. Örneğin, “day” ve “1d” eşdeğerdir. Fakat 2d gibi çoklu miktarlar yazdığımızda hata verecektir.

Örnek:

Bu örnekte sipariş tarihi alanını aylık aralıklara bölelim.

Bu gruplandırma ile mart ayındaki sipariş adedimizin 4533, nisan ayındaki sipariş adedimizin 142 olduğunu analiz ettik.

Yukarıdaki örnekler için Elastic in kendi örnek veriseti “Sample eCommerce orders” ı kullandım.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket.html

--

--