상세 컨텐츠

본문 제목

ES 강의 정리

Programming/TIL

by 홍잭슨 2024. 2. 25. 19:08

본문

본 포스팅은 ElasticSearch Essential 강의를 보고 작성되었습니다.

Elastic Search

  • Lucene(Java) 기반 오픈소스 검색 엔진
  • JSON 기반의 문서를 저장하고 검색, 분석 작업도 가능
  • 준실시간 검색 시스템 - 실시간이라고 생각될 만큼 색인된 데이터가 빠르게 검색 된다.
  • 고가용성을 위한 클러스터 구성
  • 동적 스키마 생성 - 입력될 테이터들에 대해 미리 스키마를 정의하지 않아도 동적으로 스키마 생성
  • REST API 기반의 인터페이스

  • 클러스터의 정의
    • 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말한다.
  • 노드의 종류
    • 마스터 노드 - 클러스터 상태 관리 및 메타데이터 관리
    • 데이터 노드 - 문서 색인 및 검색 요청 처리
    • 코디네이팅 노드 - 검색 요청 처리
    • 인제스트 노드 - 색인되는 문서의 데이터 전처리
  • 마스터노드가 죽으면 후보 노드들 중에서 새로운 마스터가 된다.
  • 어떤 노드에 호출하든 같은 역할을 한다. ex) 마스터 노드에 문서 요청을 해도 동일한 결과
  • 하지만 불필요한 노드 간의 요청이 생길 수 있으므로 어디로 요청하는지는 LB 같읕 도구를 통해 역할에 충실하게 구성해주는 것이 좋다.

  • 인덱스란
    • 문서가 저장 되는 논리적인 공간
    • 인덱스 설계가 가장 중요한 설계
    • 인덱스 설계에 따라 문서의 구조 및 쿼리가 달라진다.

  • Open Search에 모든 인덱스를 조회해보면 좋을 것 같다.
  • 하나의 인덱스에서 확장해나가는 것을 추천한다.
  • 샤드란
    • 인덱스에 색인되는 문서가 저장되는 공간
    • 프라이머리 샤드(원본 샤드), 레플리카 샤드(복제 및 성능을 위한)가 존재
    • 총 샤드 갯수 = number_of_shards * number_of_replicas
    • 문서는 샤드에 고르게 저장되므로 샤드의 개수가 바뀌면 저장되는 규친이 바뀌게 된다.
    • 그러므로 한번 설정된 마스터샤드의 갯수는 변경할 수 없다.

  • Mapping
    • 문서의 구조 정보 - 스키마리스가 아니라 미리 정의하지 않아도 될 뿐
    • 동적 매핑 - 처음 인덱싱 되는 문서를 바탕으로 매핑 정보는 ES가 동적으로 생성
    • 정적 매핑 - 문서의 매핑 정보를 미리 정의
    • 모든 필드를 전부 정적 매핑으로 할 필요는 없다. (유연성) - 자동으로 정의됨

  • Indexing
    • 문서를 분석하고 저장하는 과정

'Programming > TIL' 카테고리의 다른 글

TIL : TIL 이전  (0) 2022.02.19
TIL : Mockito  (0) 2021.12.21
TIL : JUnit, Mockito  (0) 2021.12.20
TIL : JUnit - 테스트 순서, Properties  (0) 2021.12.17
TIL : JUnit  (0) 2021.12.15

관련글 더보기