IT/Elasticsearch

[Elasticsearch] ELK Query Count Filter (aggs Field)

snapcoder 2024. 7. 31. 00:25
728x90
반응형
SMALL

[Elasticsearch] ELK Query Count Filter (aggs Field)

 

 

특정 키워드, 기간, 개수 필터링을 해야하는 경우에 참고하세요.

 

 

전반적인 설명

buckets 의 key 값 별로 Group by 해서 (aggs필드)

특정 기간과 키워드를 조건으로 검색해서

doc_count 값이 특정 최소값 이상인 경우

 

 

 

 

 

예시 설명

인덱스 : temp_index

검색 키워드 : JDBC Error

필터링 기간 : 어제~오늘

개수 : 10개 이상

GET temp_index/_search
{
  "query": {
    "match": {
      "log.message": "JDBC Error"
    }
  },
  "size": 0,
  "aggs": {
    "my_range_filter": {
      "date_range": {
        "field": "@timestamp",
        "ranges": [
          {
            "from": "now-1d/d",
            "to": "now/d"
          }
        ]
      },
      "aggs": {
        "my_count_filter": {
          "terms": {
            "field": "log.app_name",
            "min_doc_count": 10
          }
        }
      }
    }
  }
}

- size=0 설정해서 상세검색결과는 빼고 개수만 카운트해주기

- log.message 필드에서 "JDBC Error" 키워드를 검색한 후, log.app_name 필드로 그룹화하여 각 그룹의 개수가 10개 이상인 것만 필터링

- min_doc_count는 각 버킷에 최소 문서 수를 설정하여 해당 수 이하의 문서가 포함된 버킷을 제외

- bucket_selector는 params.count >= 10 스크립트를 사용하여 조건을 적용할수도 있긴 하나 복잡함

 

 

 

 

 

실제 ELK 쿼리 결과 캡쳐

 

728x90
반응형
LIST