Elasticsearch notları - 1 Username & Date aralığı için group by ve count sorgusu örneği

in elasticsearch •  3 months ago

Merhabalar;

Şöyle bir katoloğunuzun olduğunu varsayıyorum;

  1. KullaniciAdi ( text )
  2. IstekZamani ( date)
  3. .... Toplam kaç alanınız var ise farketmez .....

Herhangi bir tarih aralığına göre kullanıcılarınızın kaç adet kayıtlarının olduğunu bulmak istiyorsanız aşağıdaki şekilde sorgu çalıştırabilirsiniz.

query tagının üzerindeki "size" degerini değiştirirseniz, size kayıtları getirir. "from" tag ı ile beraber sayfalama mantığında kayıt çekebilirsiniz.

aggs tagının içindeki "size" degerini değiştirirseniz, size, group_by_KullaniciAdi koşulu sonucunda etkilenen yani çıkan, o kadar adet kayıt getirir.

Burada dikkat edilmesi gereken yer; "IstekZamani" alanının tipi date, "KullaniciAdi" alanının tipi text olmalı. Yani mapping değerinizi önceden kontrol edin !

GET http://sizin-elastic-sunucunuz:9200/katalog/index-adi/_search

{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "IstekZamani": {
              "gt": "2018-12-15 00:00:00",
              "lt": "2018-12-25 23:59:59"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_KullaniciAdi": {
      "terms": {
        "field": "KullaniciAdi.keyword",
        "size": 50
      }
    }
  }
}
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!