Elastic Search란?
- Apache Lucene 기반의 Java 오픈소스 분산 검색 엔진이며, 주로 대량의 데이터를 거의 실시간(NRT, Near Real Time)으로 검색, 분석 및 저장하기 위해 사용합니다.
- ELK Stack의 구성 요소 중 하나이며, 단독으로 사용되기도 하고, ELK Stack의 일부로 사용되기도 합니다
1. 단독으로 사용되는 경우
분산 검색 및 분석 엔진으로 사용되는 경우입니다. Elastic Search는 데이터를 색인화하고 검색하는 기능만을 제공합니다.
ex) 웹 애플리케이션의 검색 기능을 구현하는 경우
데이터의 색인화(Indexing)란?
검색 엔진에서 데이터를 검색 및 조회하기 쉽게 구조화하는 과정을 말합니다. 색인화된 데이터는 단어 단위로 구분되고 정규화되어 검색 쿼리와 일치하는 문서를 빠르게 찾을 수 있습니다.
색인화(Indexing) 과정
- 문서 분석(Analysis)
- 텍스트 문서를 단어로 분할합니다. 주로 공백 또는 구두점을 기준으로 분할합니다
- 대소문자를 통합합니다.
- 토큰 필터링(Token Filtering)
- 불용어(Stopwords)를 제거합니다. “and”, “the” 등과 같이 자주 등장하지만 필요없는 단어를 제거합니다
- 어간을 추출하여 통일합니다. “running”, “runs”, “ran”은 모두 “run”으로 변환합니다
- 역색인(Inverted Indexing)
- 딘어와 해당 단어가 포함된 문서의 위치 정보를 매핑하는 역색인을 생성합니다 단어가 Key가 되고, 해당 단어가 포함된 문서의 위치 정보를 Value로 매핑하여 저장합니다
데이터의 색인화(Indexing) vs DB의 Index