Splunk NOT과 !=의 차이점

Munang·2022년 8월 23일
3

splunk

목록 보기
6/57

쿼리를 작성하는데, != 조건으로 작성한 쿼리가 뭔가 잘못 작동하고 있었다.

index=munang ...A AND (clothes!=hoodie AND shoose!=plat) AND B...

이러한 쿼리였는데, 이 조건에 의하면 옷은 후드가 아니면서 동시에 신발이 플랫슈즈가 아닌 조건을 만족하는 데이터를 추출하는 것 이었다.

그런데 생각해보니.. AND 로 이어진 그룹 조건이다 보니, A이면서 후디도 아니고, 플랫도 아니고 B인 전체 조건이 AND로 처리되고 있었다.

그래서 이렇게 처리했다.

index=munang ...A AND NOT(clothes=hoodie AND shoose=plat) AND B...

이렇게 하다보니 문득 !=과 NOT의 차이점이 뭔지 궁금해졌다. 거의 쓰는 용도는 동일한데 말이다.

샘플 데이터를 아래의 표 라고 하자.

1. !=

Location!="Calaveras Farms" 라는 조건을 넣게 되면 아래와 같은 결과가 나오게 된다.


즉, Location!="Calaveras Farms" 을 만족하는 동시에 Location값이 null인 경우도 결과에서 모두 제외된다.

2. NOT

NOT Location="Calaveras Farms" 조건을 넣게 되면 아래와 같은 결과가 나온다.


NOT Location="Calaveras Farms" 을 만족하는 경우만 추출된다.

3. 정규식에서 사용

정규식 쿼리를 작성할때에

| rex field=test 정규식

이런식으로 작성하게 되는데, 이때

| rex field!=test 정규식

이렇게 하게되면 정규식과 일치하지 않는 결과를 추출해준다고 한다.

4. NOT, !=은 효율적이지 않다.

당연하다. 이를 통해 이벤트를 필터링 하게 되면 전체 데이터를 모두 탐색하면서 일치하지 않는 조건인지를 봐야하기 떄문이다. 오히려 검색할 값을 표시하는 것이 탐색 범위를 줄여준다.

1개의 댓글

comment-user-thumbnail
2023년 6월 12일

무냉님 잘보구 갑니다~!

답글 달기