반응형

엘라스틱서치를 이용해서 데이터를 수집하다 보면 반드시 날짜별로 group by(카운트)를 해야되는 경우가 생긴다. mysql에서는 group by를 이용하면 날짜별로 카운트할 수 있듯이 엘라스틱서치에도 aggs라는것이 있다. 

 

지난 시간에 했던 aggs의 연장선상이다. 

 

{
  "size": 0,
  "aggs": {
    "products": {
      "terms": {
        "field": "product"
      }
    },"visitdate": {
      "date_histogram": {
        "field": "regdate",
        "order":{"_key":"asc"},
        "calendar_interval": "day"
      }
    }
  }
}

 

지난 시간에는 위에 있는 "terms"를 이용해 group by를 했다면 날짜를 하는 경우에는 "date_histogram"이라는 옵션을 사용한다. 

 

"calendar_interval": "day"

 

이부분이다. day 대신에 month, hour등을 넣어서 월별이나 시간별로 group by 할 수도 있다.

 

 "aggregations" : {
    "visitdate" : {
      "buckets" : [
        {
          "key_as_string" : "2023-07-25 00:00:00",
          "key" : 1690243200000,
          "doc_count" : 571
        },
        {
          "key_as_string" : "2023-07-26 00:00:00",
          "key" : 1690329600000,
          "doc_count" : 1653
        },
        {
          "key_as_string" : "2023-07-27 00:00:00",
          "key" : 1690416000000,
          "doc_count" : 665
        }
      ]
    }

 

이렇게 날짜별로 나온다. 

 

 

 

 

반응형

+ Recent posts