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

in #elasticsearch2 years ago (edited)

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
      }
    }
  }
}

Coin Marketplace

STEEM 0.16
TRX 0.02
JST 0.037
BTC 10424.88
ETH 338.65
USDT 1.00
SBD 0.96