'var:*=*' 검색 결과 |
검색 결과가 없는 이유는 엘라스틱서치가 인덱싱 과정에서 특수문자를 대부분 '공백' 취급해버리기 때문.
다음은 문자열 'a=d'의 인덱싱 결과. 'a'와 'd'가 분리 색인된다. 결과적으로 전체 문자열은 'a=d'이지만, 'a' 또는 'd' 입력만으로 'a=d'를 검색할 수 있다. 단어 단위 검색(Full Text Search)이 가능해진 것.
'a=d'의 인덱싱 결과 |
'5=5'를 입력해보자. 결과 문자열 중 '5'만 하이라이트 표시가 생긴다. '='을 제외한 문자 '5'만 색인 검색을 했다는 뜻.
'var:5=5' 검색 결과 |
이때 검색 결과는 '5'를 두번 검색(var:5 OR var:5)한 결과. '5=6'을 입력하면 '5'와 '6' 모두 검색(var:5 OR var:6)한다.
'var:5=6' 검색 결과 |
결과적으로 '5=5'의 검색 결과는 그냥 '5'만 입력했을 때와 같다.
'var:5' 검색 결과 |
특이하게 검색어들이 특수문자로 연결돼 있으면 검색 범위가 같은 필드로 제한된다. 다음은 검색어 'var:5#%$@6'의 검색 결과. '5=6'의 검색 결과와 같다.
'var:5#%$@' 검색 결과 |
그러나 검색어 사이에 '공백'이 있는 'var:5 5'의 검색 결과는 사뭇 다르다. 첫번째 검색어 '5'는 'var' 필드에서, 두번째 검색어 '5'는 모든 필드에서 검색한 결과. (var:5 OR 5)
'var:5 5' 검색 결과 |
'var.keyword:*=*' 검색 결과 |
keyword 필드 검색은 SQL의 Like 검색과 같아서, 데이터 전체를 뒤지는 과정에서 성능 저하가 발생할 수 있지만, 이렇게라도 되는 게 어디냐 싶다.
관련 글
댓글 없음:
댓글 쓰기