1장. Elasticsearch의 특징 및 알고리즘

Elasticsearch란?

검색엔진의 시초인 루씬 (Lucene)을 기반으로 하고 있으며, 비정형 데이터를 색인하고 검색하는 것이 가능하며, 장점 중 하나인 역색인 구조를 사용하므로써 빠른 검색이 가능하다. 

 

Elasticsearch 기본 용어

용어 설명
Index  관계형 데이터베이스에서 table과 같이 데이터를 저장하는 공간
Shard  관계형 데이터베이스의 파티션과 같이 인덱스 내부에 색인된 데이터는 여러개의 파티션으로 구성
Document  관계  데이터베이스의 row와 같이 데이터가 저장되는 최소 단위( JSON 포맷으로 저장)
Field  관계형 데이터베이스의 Column과 같이 문서를 구성하기 위한 속성
Mapping  문서의 필드, 필드 속성을 정의하고 색인 방법을 정의

 

 

Elasticsearch의 장단점

장점

  • 오픈 소스 검색 엔진 : 아파치 재단의 루씬 (Lucene) 기반으로 개발된 오픈 소스 검색엔진이며, 활발한 커뮤니티로 끊임 없이 개선되고 발전되고 있다.
  • 역색인 : 역색인 구조로 전체 문서가 아닌 단어가 포함된  특정 문서의 위치를 알아내어 빠른 결과를 찾을 수 있다.
  • 통계분석 : 비정형 로그 데이터를 수집하여 통계 분석에 활용할 수 있으며, Kibana를 연결하면 실시간으로 로그를 분석하고 시각화할 수 있다.
  • Restful API : HTTP기반의 RESTful를 활용하고 요청/응답에 JSON을 사용해 개발 언어, 운영체제, 시스템에 관계없이 다양한 플랫폼에서 활용이 가능하다.
  • Multi-teneancy : 서로 상이한 인덱스일지라도 검색할 필드명만 같으면 여러 인덱스를 한번에 조회할 수 있다.
  • 다양한 검색 : 불린 검색, 언어 분석, 지리적 위치 검색, 쿼리 문자열, 맞춤법 검사 등 다양한 검색 기능을 제공한다.

단점

  • Near Real-Time : 데 이터 저장 시점에 해당 데이터를 색인, 색인된 데이터는 1초 뒤에나 검색이 가능해져서 실시간으로 검색이 불가능하다. (내부적으로 커밋(commit), 플러쉬(Flush)와 같은 복잡한 과정을 거친다.)
  • Transaction Rollback 지원 X : 전체적인 클러스터의 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없다.
  • 데이터 업데이트 X : 업데이트 명령이 올 경우 기존 문서를 삭제하고 새로운 문서를 생성한다. 업데이트에 비해서 많은 비용이 들지만 이를 통해 불변성(Immutable)이라는 이점을 취한다.

 

Elasticsearch의 알고리즘

Elasticsearch 기본 알고리즘이 TF/IDF에서 BM25로 바뀌면서 Elasticsearch 또한 5.0버전 이후부터 기본 유사도 알고리즘이 BM25로 사용되고 있다.

 

TF/IDF

TF (Term Frequency) - 단어 빈도

TF는 특정 문서에서 단어가 등장한 횟수를 말한다.

DF - 문서 빈도

DF는 특정 단어가 등장한 문서의 수를 말한다.

IDF (Inverse Document Frequency) - 역 문서 빈도

DF에 반비례하는 수를 뜻한다.

 

BM25

추천에 많이 사용되는 알고리즘으로 TF/IDF의  개념에 문서 길이를 고려한 알고리즘이다.

아래의 수식을 자세히 보면  TF/IDF의 계산에서 각각의 수식에 파라미터를 더하는 등 보정하여 성능이 개선되었다.

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유