본문 바로가기
카테고리 없음

Elasticsearch는 왜 Full-text 검색에 강할까?

by 촌쥐 2021. 6. 9.

Elasticsearch(ES)가 빠르다는 소리는 많이 들어보셨을거라 생각합니다. 루씬 기반의 검색엔진이라는 것도요.

그러면 다른 DB들에 비해서 Elasticsearch는 Full-text 어떻게 빠르다는 소리를 들을까요? 

 

일반적인 DB들이 쓰는 검색에 쓰는 index와 다르게 ES는 inverted index을 통해서 검색합니다.

그렇다면 이 inverte index는 뭘까요?

index 와 inverted 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

 

언제라도 글에 틀린 점이 있다면 댓글로 남겨주시면 감사하겠습니다.

댓글