: ElasticSearch는 역인덱스 구조를 사용해서 데이터를 저장함
⇒ 역인덱스란 특정 단어에 대해서 해시테이블 형태로 매핑하는 것
저장하고자 하는 문장 형태
ID | 문장 |
1 | 아버지가 방에 들어가신다. |
2 | 아버지가 안방에 들어가신다. |
3 | 어머니가 방에 들어가신다. |
4 | 동생이 방에 들어갔다. |
5 | 라면 좀 끓여줘 |
ElasticSearch
단어 | ID | 단어 | ID |
아버지 | 1,2 | 동생 | 4 |
어머니 | 1 | 라면 | 5 |
방 | 1,2,3,4 | 들어 | 1,2,3,4 |
끓 | 5 |
RDBMS
ID | 문장 |
1 | 아버지가 방에 들어가신다. |
2 | 아버지가 안방에 들어가신다. |
3 | 어머니가 방에 들어가신다. |
4 | 동생이 방에 들어갔다. |
5 | 라면 좀 끓여줘 |
•
MySQL이나 오라클같은 관계형 데이터베이스에서는 보이는 그대로 저장
•
이 경우 아버지, 동생과 같은 특정 문장에 포함되는 단어를 찾기 위해선 각 ID의 행 내의 모든 데이터를 읽는 불필요한 연산이 발생하여 속도가 느려짐
•
이를 보완하고자 ElasticSearch는 가운데 형태로 단어 기반 문장의 인덱스 테이블을 구성, 이를 통해 역인덱스가 존재하면 해당 문장들을 빠르게 가져올 수 있음
•
역인덱스의 경우, 결국 단어를 분리해내어야하므로 텍스트 분석이 사용됨