느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail
Published 2019. 10. 30. 19:28
ElasticSearch 시작 IT/ElasticSearch

 

ElasticSearch는 더크커팅이 개발한 Lucene기반 프로젝트에서 파생된 프로젝트로서 최근 기업에서 많이 사용하고 있다. 나 같은 경우에는 오픈에스앤에스에 재직시절 팀장님께서 팀원들에게 Solr 프로젝트와 ElasticSearch 프로젝트를 각 각 내주셨었는데 Solr 프로젝트를 진행하였던 기억이 있다.

 

Solr 프로젝트를 진행하면서 가장 어려웠던 사항은 ElasticSearch에 비해 전반적인  Reference(책, 인터넷 블로그)가 적어서 어려움을 겪으며 프로젝트를 진행하였던 기억이 있다. 최근 기업에서는 ElasticSearch를 많이 사용하기 때문에 해당 솔루션에 대해 알아보도록 하겠다.

 

기본적으로 검색시스템은 데이터수집, 색인, 검색, 검색 UI 등으로 나뉘어져 있는데 Lucene의 경우 색인, 검색만 지원해주는 라이브러리 이고 이러한 라이브러리를 이용하여 Lucene의 검색 및 색인 기능을 편리하게 해주고 추가적인 기능을 제공해주는 프로젝트들이 Solr, ElasticSearch다. 

 

ElasticSearch 공부에 들어가기에 앞서 각 용어의 정의에 대해 알아보도록 한다.

 

 

 

색인

검색할 데이터를 검색할 수 있는 구조로 변경하기 위해 원본 문서를 변환하여 저장하는 일련의 과정. 

 

검색

색인에 들어있는 토큰을 기준으로 해당하는 토큰이 포함되는 문서를 찾는 과정

 

질의

사용자가 원하는 결과를 출력하기 위해 검색 시 입력하는 검색어 또는 검색 조건.

 

 

Lucene라이브러리 외적으로 엘라스틱 서치에 추가되는 기능

 

높은 가용성

엘라스틱서치는 하나 이상의 노드로 구성돼 있으며, 각 노드는 1개 이상의 데이터 원본과 복사본을 가지고 있어 서로 다른 위치에 나누어 저장. 노드가 종료되거나 실행에 실패하는 경우 엘라스틱서치는 노드들의 상태를 감지하고 종료된 노드가 가지고 있던 데이터를 다른 노드로 옮기는 작업을 수행.

 

전문검색

데이터의 전체 문장에서 검색어를 추출해 저장하고 이를 바탕으로 검색하는 전문검색을 지원한다.

 

멀티테넌시

엘라스틱서치의 데이터들은 여러개로 분리된 인덱스들(Indices)에 그룹으로 저장된다. 엘라스틱서치에서는 데이터를 검색할 때 서로 다른 인덱스의 데이터를 바로 하나의 질의로 묶어서 검색하고 여러 검색 결과를 하나의 출력으로 도출할 수 있다.

 

REST API 

 

REST API는 2000년 로이 필딩이 논문에서 소프트웨어 아키텍처 스타일로 제안하였고 요즘은 OPEN API를 개발하는 기본 구조로 확산되었다.

REST는 자원지향(ROA : Resource Oriented Architecture)로 웹의 콘텐츠(텍스트, 이미지, 동영상)를 하나의 자원으로 파악하여 각 자원의 고유한 URI를 부여하고 해당 자원에 대한 CRUD 작업을 HTTP의 기본 메서드인

GET, POST, PUT, DELETE를 이용해 처리하는 방식이다.

엘라스틱서치에서의 REST 자원은 색인된 데이터 및 질의, 검색되어 JSON 형식으로 출력된 문서들이다.

 

JSON

JSON(Javascript Object Notation) 은 웹에서 자료를 주고받을 때 사용하는 경량 데이터 형식으로 표현할 수 있는 자료형으로는 수, 문자열, 참/거짓이 있고 집합자료형으로는 객체, 배열을 사용하고 있다.

 

 

전반적으로 보았을때 Solr와 아주 흡사하거나 똑같다고 생각한다. 다만, 다른점은 서버를 다중으로 구현할 경우 Solr의 경우에는 주키퍼만 제공했지만 ElasticSearch는 주키퍼 외에도 젠 디스커버리 라는 것을 사용하고 join등을 지원한다고 한다. 

 

개인적으로 이 외에도 이전회사에서 Solr프로젝트와 ElasticSearch프로젝트에서 가장 큰 차이가 났던점은 데이터 시각화 부분에서 Kibana라는 도구가 Solr의 시각화 도구 banana에 비해 상당히 퀄리티가 있었다는 것이 기억난다.

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!