[ES] 엘라스틱 서치 🔍

lnnae·2020년 4월 23일
0

엘라스틱 서치

엘라스틱 서치는 확장성이 뛰어난 오픈소스 검색 및 분석 엔진입니다.
방대한 양의 데이터를 신속하게 저장, 검색, 분석할 수 있도록 지원해주는 도구입니다. 보통 복잡한 검색 및 요구 사항이 있는 어플리케이션의 기본 엔진 기술로 사용된다고 합니다.
루씬(Lucene) 기반의 분산 검색 엔진으로, 단독으로 사용할수도 있고 ELK 스택으로 사용할 수 도 있습니다.

활용 사례

  • 판매 제품을 검색할 수 있는 온라인 웹 스토어 (제품 카탈로그, 재고 저장 및 자동 완성)
  • 로그, 트랜잭션 데이터를 수집하고 분석해 마이닝하여 통계, 요약 정보 얻기
  • Samsung SDS (챗봇), Tripple, 11번가, Netflix 등 다양한 기업에서 사용 중.. 두근♥
    • 활용 사례를 읽어보니 트래픽이 증가할수록 서버 증설에 힘을 쏟아야 했고, 이때 RDBMS 증설의 한계를 많이 느껴서 사용하게 된 케이스가 많았습니다.
    • 혹은 사용자 맞춤 데이터 (다양한 쿼리)가 필요한 경우!

특징

  • Scale Out에 용이하다. 샤드!!
  • REST API를 제공한다.
  • NRT (Near Realtime)이다.

기본 개념

노드

클러스터에 포함된 단일 서버. 데이터를 저장하고 클러스터의 색인화, 검색 기능에 참여합니다.
기본 이름은 UUID이고 원하는 이름으로 정의할 수 있지만, 어떤 서버가 ES 클러스터의 어떤 노드에 해당하는지 식별해야하기 때문에 이름을 정의하는 것이 중요합니다.

클러스터

클러스터는 하나 이상의 노드의 집합체입니다. 클러스터로 통합 색인화 및 검색 기능을 활용할 수 있습니다. 기본 이름은 elasticsearch 입니다.
한 클러스터에서 원하는 개수의 노드를 포함할 수 있습니다.

인덱스

비슷한 특성을 가진 문서를 모아놓은 것입니다. 색인은 모두 소문자여야하고, 이름으로 식별됩니다. 지정한 이름으로 포함된 문서에 대한 색인화, 검색, 수정, 삭제 작업을 할 수 있습니다.

도큐먼트 (문서)

색인화할 수 있는 기본 정보 단위입니다. 하나의 색인에 원하는 개수의 문서를 저장할 수 있습니다. 문서는 JSON 형식입니다.

타입

하나의 인덱스에서 하나 이상의 타입을 정의할 수 있습니다. 유형은 색인을 논리적으로 분류한 것입니다. 체계는 사용자가 정의할 수 있습니다.

인덱스는 기존 RDBMS의 데이터베이스, 타입은 테이블, 도큐먼트는 행이라고 생각하면 이해가 쉬울 것 같습니다..

샤드

인덱스를 생성할 때 원하는 샤드의 수를 정의할 수 있습니다. 각 샤드는 독립적인 인덱스이며, 클러스터의 어떤 노드에서도 호스팅할 수 있습니다.
샤드를 통해 데이터의 수평적인 분산 (Scale Out) 을 할 수 있게됩니다.

리플리카(Replica Shard)

샤드에 대해 하나 이상의 복사본을 생성하는 것입니다. 샤드나 노드에서 오류가 발생할 때 높은 고가용성을 제공한다고 합니다.

핳.. 고가용성이란, 서버, 네트워크, 프로그램 등의 서비스가 오랜 기간 지속적으로 정상 운영이 가능한 성질을 말합니다.

각 인덱스는 여러 개의 샤드로 분리할 수 있고, 리플리카가 없거나, 1회 이상 복제할 수 있습니다. 복제된 경우 기본 샤드와 리플리카 샤드를 갖게됩니다.


간단히 엘라스틱 서치의 Document를 읽으며 개념을 알아봤습니다.
다음에는 기본 예제를 따라해볼 예정입니다.

출처 :
https://www.elastic.co/guide/kr/elasticsearch/reference/current/getting-started.html

profile
이내임니당 :>

0개의 댓글