Elasticsearch 소개

tacoyaggi ㅣ 2023. 5. 22. 00:02

Elasticsearch 

  • 검색엔진
  • Java 루씬 라이브러리 기반의 애플리케이션
  • Json 기반의 문서를 저장, 검색, 분석 가능
  • 준실시간 검색 시스템
  • 고가용성을 위한 클러스터 구성 (1개 이상의 노드로 클러스터 구성 가능)
  • 동적 스키마 (스키마를 정의하지 않아도 동적으로 스키마 생성 가능)
  • Rest API 지원
  • 클러스터로 구성되기 때문에 어떤 노드에 어떤 요청을 해도 동일한 응답 보장

검색엔진

  • 네이버 , 구글 크롤러가 웹을 돌아다니면서 HTML Data를 수집
  • 수집한 데이터를 DB에 저장
  • 사용자가 브라우저를 통해 검색을 하면 DB에 저장되어 있는 데이터를 브라우저를 통해 사용자에게 전달

Elasticsearch 클러스터

  • 하나 이상의 노드가 모인 것
  • 노드가 각자의 역할을 바탕으로 연결되어 하나의 시스템처럼 동작
  • 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능 제공
  • 기본 이름 "elasticsearch"
  • 노드가 증가하면 클러스터 성능도 비례적으로 상승

Elasticsearch 노드

  • 클러스터에 포함된 단일 서버
  • 데이터를 저장하고 클러스터의 색인화 및 검색 기능에 기여

Elasticsearch 인덱스

  • 문서가 저장되는 논리적인 공간 
  • RDBMS의 DB 같은 개념
  • 문서 라우팅 규칙 때문에 인덱스 생성 이후 프라이머리 샤드 개수 변경 불가
  • 인덱스 템플릿을 통해 인덱스 생성 시의 샤드 개수를 미리 설정 가능

Elasticsearch 샤드

  • 인덱스에 색인되는 문서를 저장하는 공간
  • 프라이머리 샤드 : 문서가 저장되는 원본 샤드
  • 레플리카 샤드 : 프라이머리 샤드의 복제 샤드
  • 인덱스 생성 후 프라이머리 샤드 개수 변경 불가
  • number_of_shards 기본값은 1
  • 인덱스 템플릿을 통해 샤드 개수 설정 가능

Elasticsearch 매핑

  • ES에 저장되는 문서들의 구조를 나타내는 정보
  • 매핑을 미리 정의하지 않고 처음으로 색인되는 문서의 구조를 바탕으로 매핑을 자동 생성하는 것을 [동적 매핑]
  • 매핑을 미리 정의하는 것을 [정적 매핑]
  • 매핑이 정의된 후, 매핑에 맞지 않는 값이 색인될 경우 에러 발생

Elasticsearch 색인

  • 문서를 분석하고 저장하는 과정 
  • inverted index 분석이 자원을 가장 많이 소모
  • Text Type , Keyword Type 2가지 존재 

* text type은 RDMS Like 같은 존재

* keyword type은 일반 검색 , 사과를 검색한다고 했을 때, 사과(입력) => 사과(출력) , 사가(입력) => X(출력) 

Cat API

  • Cat Health => 클러스터 상태 확인
  • Cat Nodes => 노드 상태 확인
  • Cat Indices => 인덱스 상태 확인
  • Cat Shards => 샤드 상태 확
  • 클러스터의 정보를 사람이 읽기 쉬운 용도로 보여주기 위한 API
  • green => 정상 동작
  • yellow => 프라이머리 샤드 정상, 래플리카 샤드 비정상 , 색인은 정상이나 검색 성능에 영향
  • red => 프라이머리 샤드 및 레플리카 샤드 비정상 배치, 색인 성능 및 검색 성능에 영

 

'Project > Elastic Search' 카테고리의 다른 글

검색 엔진 호출  (0) 2023.06.20
Elasticsearch 실습  (0) 2023.05.30