본문 바로가기

개발론

엘라스틱 서치에 대해서

엘라스틱 서치의 사용 

검색을 위해서 단독으로 사용되기도 하지만 ELK 스택으로 함께 사용되곤 한다.

LogStash  Elasticsearch Kibana 이렇게이다.

 

ELK 스택은 무엇일까?

 로드밸런싱이나 MSA 등으로 분산되어서 저장되어있는 WAS의 로그들을 한곳으로 모으고 검색하기 수월하게 하기 위해서 사용된다.

 Logstash 로 로그를 모아서 엘라스틱서치로 보내고

 ElasticSearch 는 집계하고 검색한다

 Kibana는  ElasticSearch 로 검색된 데이터들을 시각화해서 보여준다.

 

 

엘라스틱 서치의 구조

 우선 하나의 서버인 노드가 있다.

 노드가 모여서 클러스터가 된다.

 클러스터는 각각의 클러스터와 데이터 접근, 교환이 안되는 독립적인 공간이다.

 

 

엘라스틱 서치가 빠른 이유

 RDBMS 에서의 Index와 비슷한것이 있다.

 샤드라는 것인데, 인덱스의 저장을 ScaleOut 해서 분산 저장한다.

 

tip ) scale out 이란 ? 물리적으로 나누어서 존재하게 하는것이다.

 

 

 

 

 

=========================

아래는 제이온님의 블로그에서 발췌해온 내용입니다.

https://steady-coding.tistory.com/573

예상 면접 질문 및 답변

Elasticsearch란?

Elasticsearch는 Apache Lucene(아파치 루씬) 기반의 Java 오픈 소스 분산 검색 엔진이다. Elasticsearch를 통해 루씬 라이브러리(Java에서 개발한 정보 검색용 라이브러리)를 단독으로 사용할 수 있으며, 방대한 양의 데이터를 신속하게(거의 실시간) 저장, 검색, 분석을 수행할 수 있다.

 

Elasticsearch는 언제 사용하는가?

Elasticsearch는 검색을 위해 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana) 스택으로 사용되기도 한다.

 

ELK를 왜 사용하는가?

주로 ELK는 로드밸런싱되어 있는 WAS의 흩어져 있는 로그를 한 곳으로 모으고, 원하는 데이터를 빠르게 검색한 뒤 시각화하여 모니터링하기 위해 사용한다

 

Elasticsearch의 구조를 설명하라.

Elasticsearch는 클러스터로 구성되며, 클러스터 안에 노드, 노드 안에 인덱스, 인덱스 안에 샤드, 샤드 안에 세그먼트로 구성된다.

각각의 특징은 본문을 참조할 것.

 

Elasticsearch는 왜 검색 속도가 빠른가?

역색인 자료 구조로 인해 빠르다.

 

Elasticsearch의 장점은?

  • Scale out
    • 샤드를 통해 규모가 수평적으로 늘어날 수 있음
  • 고가용성
    • Replica를 통해 데이터의 안전성을 보장
  • Schema Free
    • Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없음
  • Restful
    • 데이터 CRUD 작업은 HTTP Restful API를 통해 수행한다.
      • SELECT = GET
      • INSERT = PUT
      • UPDATE = POST
      • DELETE = DELETE
    • Restful API를 사용한다는 것은 다양한 플랫폼에서 응용이 가능하다는 장점이 있다.
  • 역색인

 

Elasticsearch의 단점은?

  • 실시간 처리가 불가능하다.
    • elasticsearch는 인메모리 버퍼를 사용하므로 쓰기와 동시에 읽기 작업을 할 경우, 세그먼트가 생성되기 전까지는 해당 데이터를 검색할 수 없다.
  • 트랜잭션을 지원하지 않는다.
    • 분산 시스템 구성의 특징 때문에 시스템적으로 비용 소모가 큰 트랜잭션 및 롤백을 지원하지 않는다.
  • 진정한 의미의 업데이트를 지원하지 않는다.
    • 세그먼트에서 데이터가 삭제될 경우 Soft-Delete를 한다. (삭제 flag = true)
    • 세그먼트에서 데이터가 수정될 경우 Soft-Delete를 하고, 수정된 데이터를 새로운 세그먼트로 생성한다.
    • RDBMS의 Index와 유사한 동작.

 

Elasticsearch와 RDBMS의 차이는?

Elasticsearch는 Json 문서를 통해 검색을 수행하므로 스키마가 없지만, RDBMS는 엄격한 스키마가 존재한다.

Elasticsearch는 역색인 자료 구조로 검색을 수행하지만, RDBMS는 인덱스 자료 구조로 검색을 수행한다.

Elasticsearch는 저장소보다는 검색 엔진에 가깝다.

 

Elasticsearch와 NoSQL의 차이는?

Elasticsearch는 실시간 처리가 불가능하지만, NoSQL은 실시간 처리가 가능하다.

Elasticsearch는 역색인 자료 구조가 있지만, NoSQL은 없다.

Elasticsearch는 저장소보다는 검색 엔진에 가깝다.