Detail
IT/Other

Elasticsearch (엘라스틱 서치) 에 대해서

by 추쿠아비 2021. 5. 31.

Elasticsearch

※ Java로 만들어진 전문 검색(Full Text Search) 소프트웨어. 미리 축적된 대량의 데이터에서 특정 키워드를 찾아내는 기능을 가짐. Java 클래스 라이브러리로 제공됨.
- by Lucene

DBMS로도 충분하지 않을까?

데이터베이스마다 장단점이 다르고 대규모 데이터 축적 및 활용에서 모든 유스 케이스에 유연하게 대처할 수 있는 데이터 스토어가 없다. 또 각각의 데이터 스토어는 특정 목적으로 특화되어 진화하고 있다.

 

  • MySQL
    모순 없이 영속화하는 일에 특화된 데이터베이스
    장점 : 쿼리 사용(SQL), 검색 트래픽에 맞게 시스템 확장에 유리
    단점 : 데이터 증가, 저장 속도에서 약점
  • Redshift (AWS)
    데이터 웨어하우스 데이터베이스
    장점 : 대규모 데이터 축적 및 분석에 유리
    단점 : 불특정 다수의 클라이언트로부터 동시에 이용되어 검색 리퀘스트가 대규모인 유스 케이스에선 불리
  • DynamoDB (AWS)
    NoSQL
    장점 : 폭넓고 방대한 양의 데이터를 빠르게 그리고 동적으로 정리, 분석이 가능
    단점 : 비관계 광역 분산 데이터베이스 시스템. 그래서 복잡한 쿼리와 정렬에 불리

RDBMS와 Full Text Search의 차이

RDBMS는 검색조건에 매칭 되는 데이터를 정확하게 리턴하는 반면 Elasticsearch와 같은 Full Text Search 엔진은 검색조건과 관계성/관련성이 높은 데이터를 뽑아 리턴하는 특징이 있다. (Elasticsearch 결과에 _score:xxxx와 같이 수치가 출력됨)

 

Elasticsearch: 강한 분야

 

  • 고도의 실시간 분석
  • 대규모 분산
  • 고가용성
  • 멀티테넌시
  • 고도의 실시간 분석
  • Full Text Search
  • 도큐먼트 지향
  • 스키마 프리
  • RESTfulAPI
  • 데이터 보호 기능
  • 형태소 분석, n-gram 등 자연 언어적인 분석
  • 간단한 스케일 아웃

Elasticsearch: 주로 사용하는 분야

 

  • 사용처 검색 (형태소 분석)
  • 서제스트 랭킹(정렬)
  • 콘텐츠 리스트 표시
  • 페이징
  • 로그 수집
  • etc...

Elasticsearch는 복잡한 쿼리가 필요하거나, 여러 기능 구현이 필요한 부분에서도 쿼리 하나로 구현이 가능한 것이 특징이다.

Elasticsearch의 데이터를 가시화해주는 KIBANA라는 소프트웨어도 존재한다. KIBANA에는 이렇게 쓰여 있다.

 

한 장의 이미지가 수천 줄의 로그보다 낫다

 

극히 공감하는 말이다. 때에 따라 텍스트와 이미지는 그 정보량이 압도적으로 다르다. KIBANA를 추가로 활용하여 데이터 분석뿐만 아니라 적용이 가능한 부분이 있다면 Full Text Search 엔진을 써보는 것도 좋을 것 같다.



728x90

댓글