nextrend 개발일지 (2)

최대 1 분 소요

elasticsearch의 검색 쿼리는 꽤 다양한 기능을 지원한다. 사이트의 특성상, 구성하는 필드에 대해 “특정 검색 기준”으로 시작하는 내용들을 검색하는 기능을 구현해야 하는 니즈가 있다.
match 쿼리에서 ‘.*’ 를 사용한 정규식 검색을 해보았다. 하지만 검색 결과는 검색 기준으로 시작하는 것이 아닌, 정확한 매칭을 담아주고 있었다.
검색해보니 얼핏 es6+에서는 match의 regexp를 지원하지 않는다고 하나보다.

암튼, 이를 위해서 원래는 prefix 쿼리를 사용했었는데, 이는 정말 이것으로 시작하는 내용만 검색해준다.
그러나 프로젝트 진행중, keyword type에 대한 부분 검색이 필요해서 이 검색을 위한 쿼리를 알아보니 regexp 쿼리가 있는 것을 보고 이것으로 대체하고자 한다.

근데… regexp 보다 prefix가 더 빠르지 않을까?

그냥 호기심이 들어서 테스트를 해보기로 하였다.

아직까지 정제된 데이터가 많지는 않기 때문에 정확할 수는 없지만, 생각나는대로 실행 시간을 비교해보았다.

regexp를 사용한 쿼리

prefix를 사용한 쿼리

대충 확인했을 때는… prefix가 더 빠른가보다. 두가지를 동시에 활용해서 검색 쿼리를 짜야할 것 같다 ㅎㅎ..


++ prefix, wildcard, regexp의 성능비교..?.

아래 사이트에서… 주장하는 바로는 모든 쿼리가 비슷비슷하다고 한다.
일단은 프로젝트 구현이 우선이기에, 추후에 사용상 큰 문제가 있을 시 다시 수정하도록 한다.

카테고리:

업데이트: