2020년 7월 9일 목요일

Elasticsearch의 정규표현식 검색 - 2nd

다음은 '공백'이 아닌([^ \n]) 문자열을 0개 이상(*) 검사하는 정규표현식.


문자클래스 []\n이 포함된 이유는 한 줄 단위 검사를 위해서.


다음은 User-Agent (텍스트) 필드를 대상으로 해당 정규표현식 검색을 실행한 결과. '공백'이 아닌 문자열을 검색하는 정규표현식을 사용했음에도 '공백'이 포함된 문자열이 검색되고 있다.


검색 결과에 '공백'이 포함된 이유는 엘라스틱의 인덱싱 특징 때문. 엘라스틱은 '공백' 등의 특수문자를 제외한 순수 문자만을 인덱싱하기 때문에 검색 범위에 '공백' 등의 특수문자는 아예 포함되지 않는다.

검색이 문자 단위로만 이루어진다는 얘기. '공백' 등의 특수문자 상황을 감안한 검색을 하려면 다음처럼 인덱싱을 하지 않는 키워드 필드를 사용해야 한다.


참고로 KQL은 정규표현식을 지원하지 않는다.


관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스