null과 empty의 차이는 미묘하다. 다음은 null(필드 X)과 empty 값을 포함한 param 필드.
empty를 검색 결과에서 제외하려면 정규표현식을 사용해야 한다.
1개 이상을 검사하는 수량자 +와 0개도 검사할 수 있는 *의 차이에 주의.
엘라스틱도 마찬가지
샘플 데이터 입력.
PUT _bulk{"index": {"_index": "test"}}{"url": "a.php","param": "a=b"}{"index": {"_index": "test"}}{"url": "b.php","param": ""}{"index": {"_index": "test"}}{"url": "c.php"}
다음은 값이 존재하는 param 필드 검색 결과. empty가 포함된다.
필드가 존재하는 한 empty도 존재하는 값이라는 얘기.
검색 결과에서 empty를 제외하려면 엘라스틱도 정규표현식을 사용해야 하며, empty 값은 인덱싱이 되지 않기 때문에 수량자 *을 사용해도 자연스럽게 검색 결과에서 제외된다.
수량자의 차이를 비교하려면 인덱싱을 하지 않는 키워드 필드를 사용하면 됨.
댓글 없음:
댓글 쓰기