Elasticsearch(ES)가 빠르다는 소리는 많이 들어보셨을거라 생각합니다. 루씬 기반의 검색엔진이라는 것도요.
그러면 다른 DB들에 비해서 Elasticsearch는 Full-text 어떻게 빠르다는 소리를 들을까요?
일반적인 DB들이 쓰는 검색에 쓰는 index와 다르게 ES는 inverted index을 통해서 검색합니다.
그렇다면 이 inverte index는 뭘까요?
Inverted Index는 한국어로 역색인이라고 합니다. index를 뒤집었다는 말이죠.
위 그림을 보면 왼쪽에는 문장마다 index를 하나씩 만든 반면에
오른쪽은 단어를 key로 만들어 각 문장의 번호를 value로 만든 것을 볼 수 있습니다.
이렇게 하면 'C is difficult'를 is 같은 관사는 빼고 검색한다고 하였을때
C 와 difficult라는 key로 value를 찾으면 공통된 value로 1이 나옵니다.
그렇다면 1번 문장이 내가 찾던 문장이 되는 것이겠죠.
이러한 inverted index 덕분에 ES가 full-text 검색에 강하다는 것입니다.
다만 주의하실 점은 너무 비슷한 문서가 많거나 공통적으로 가지고 있는 단어들이라면
오히려 성능이 떨어지는 경우가 생길 수 있습니다.
역시 만능 DB라는 건 없네요.
참조
Elasticsearch가 빠르다는데..? inverted index? | https://jiseok-woo.tistory.com/3
언제라도 글에 틀린 점이 있다면 댓글로 남겨주시면 감사하겠습니다.
댓글