엘라스틱서치(Elasticsearch)에서 역인덱스(inverted index)는 데이터를 효율적으로 검색할 수 있도록 구성된 핵심 구성 요소입니다. 역인덱스는 주어진 검색어에 대한 문서를 빠르게 찾기 위해 사용됩니다.
즉, 키워드를 통해 문서를 찾아내는 방식입니다.
1. 문서 색인(Indexing): 엘라스틱서치에서 문서가 색인될 때, 문서의 각 단어는 해당 단어가 나타난 문서 ID와 함께 역인덱스에 추가됩니다.
2. 토큰화(Tokenization): 문서의 텍스트는 토큰화되어 개별 단어로 분할됩니다. 예를 들어, "The quick brown fox"라는 문장은 "The", "quick", "brown", "fox"로 토큰화됩니다.
3. 어휘(Vocabulary) 구성: 모든 문서에서 발견된 고유한 단어로 이루어진 어휘가 생성됩니다.
4. 역인덱스 생성: 각 단어에 대해 해당 단어가 어느 문서에 나타났는지를 기록합니다. 이를 위해 역인덱스는 각 단어를 키(key)로 하고, 해당 단어가 등장한 문서 ID 리스트를 값(value)로 가지는 맵 형태로 구성됩니다.
5. 검색(Query): 사용자가 검색을 실행하면, 엘라스틱서치는 역인덱스를 사용하여 검색어에 해당하는 문서 ID를 신속하게 찾습니다. 이후 검색 결과로 해당 문서들을 반환합니다.
이러한 역인덱스 구조는 검색 속도를 빠르게 하고, 대규모 데이터셋에서도 효율적으로 작동할 수 있도록 합니다.
역인덱스의 주요 장점과 단점
장점:
- 빠른 검색 속도: 역인덱스는 검색어에 대한 검색 속도를 향상시킵니다. 각 단어에 대한 역인덱스가 생성되어 있으므로 검색어와 일치하는 문서를 빠르게 찾을 수 있습니다.
- 효율적인 메모리 사용: 역인덱스는 문서의 내용이 아니라 단어와 해당하는 문서 ID를 매핑하는 구조를 가지고 있어 메모리를 효율적으로 사용합니다. 이는 대량의 데이터를 처리할 때 중요한 요소입니다.
- 유연한 검색 기능: 다양한 검색 쿼리에 대한 지원이 가능합니다. 단순한 단어 검색부터 복잡한 불리언 검색, 정확한 일치 검색, 범위 검색 등 다양한 유형의 검색을 지원합니다.
- 전문 텍스트 검색: 역인덱스는 전문 텍스트 검색에 특히 효과적입니다. 텍스트 문서의 내용을 색인화하여 키워드나 구문에 따라 검색할 수 있습니다.
단점:
- 인덱스 크기: 역인덱스는 데이터의 크기와 상관없이 메모리나 디스크 공간을 차지합니다. 따라서 대량의 데이터를 다룰 때에는 상당한 공간이 필요할 수 있습니다.
- 업데이트 오버헤드: 문서의 추가, 수정, 삭제 등의 작업은 역인덱스를 업데이트해야 합니다. 대규모 데이터셋에서는 업데이트 작업이 오버헤드를 초래할 수 있습니다.
- 부분 일치의 한계: 일부 검색 유형에서는 역인덱스의 부분 일치가 원하는 결과를 제공하지 않을 수 있습니다. 예를 들어, 전문 텍스트 검색에서는 특정한 문구의 일부만을 포함하는 문서를 찾는 것이 어려울 수 있습니다.
- 정확도의 문제: 역인덱스는 단어 수준에서 작동하기 때문에, 단어의 의미나 문맥을 고려하지 않을 수 있습니다. 따라서 일부 상황에서는 검색 결과의 정확도가 떨어질 수 있습니다.
참고하면 좋은 글 : https://justdoit0730.tistory.com/123
'Interview' 카테고리의 다른 글
[DB] 정규화와 비정규화 (0) | 2024.02.10 |
---|
댓글