본문 바로가기
TIL/엘라스틱 서치

Elastic Search : 엘라스틱 스택 개발부터 운영까지 - 1

by yeon_zoo 2024. 1. 3.

[엘라스틱 스택의 구성 요소]

  • 엘라스틱 서치
  • 루씬 기반으로 만들어짐. (루씬은 라이브러리 형태라 더 필요한 개발이 많았으나 엘라스틱서치는 애플리케이션)
  • 전문 검색(full text search) 기능 제공 목적으로 등장하였으나 현재 빅데이터 플랫폼의 일부로 발전 중
  • 루씬에서 제공하는 데이터 타입벼로 최적화된 자료구조 지원, 스코어링 등의 기능을 이어받아 강점이 있음.
  • REST API 방식 (GET, POST. PUT, DELETE 로 사용)
  • 로그스태시
  • 오픈소스 데이터 수집 도구
  • 비츠
  • 무거운 로그스태시 대신 실제 서비스 호스트에 설치하기 좋은 수집기. (로그스태시 수준의 이벤트 가공은 지원하지 않음.)
  • 흔히 비츠에서 각 서비스 호스트의 정보를 수집하고 로그스태시에서 이를 취합하고 가공해 엘라스틱 서치로 전송함.
  • 키바나
  • 오픈소스 시각화 UI

 

[엘라스틱 서치]

  • 인덱스 :도큐먼트를 저장하는 논리적 구분자
  • 도큐먼트 : 실제 데이터를 저장하는 단위, JSON, 여러 필드와 값(value)를 갖는다.

MySQL / 엘라스틱 서치 용어 비교

  • 테이블 = 인덱스
  • 레코드 = 도큐먼트
  • 컬럼 = 필드
  • 스키마 = 매핑

 

인덱스(테이블):

  • 스키마에 따라 인덱스 구분 (같은 스키마끼리 그루핑)
  • 관리 목적의 그룹핑 : 파티셔닝과 유사한 개념으로 사용. 인덱스가 커지면 검색 시 많은 도큐먼트를 참조해야 하므로 성능이 저하된다. 따라서 인덱스 용량 제한을 두고 월(month) 단위의 인덱스 분리 등을 진행한다.
  • 인덱싱 : 도큐먼트를 인덱스에 포함시키는 것 (유사 개념 : insert into {table_name})

 

매핑의 두 가지 종류:

  • 다이나믹 매핑 : 데이터 타입을 지정하지 않고 알아서 도큐먼트 필드, 값 보고 결정. (Glue crawler 같은 역할)
  • 형 변환 규칙 예시: 숫자 필드에 문자열 입력되면 숫자로 자동 변환 시도 ex) “age”: “10" -> 10
  • 명시적 매핑 : 사용자가 수동으로 매핑.
  • 저장 용량이 큰 타입 (ex. Long) 등을 명시적으로 매핑하면 짧게 유지하여 저장 공간을 아끼거나, 문자열의 경우 text, keyword를 구분하지 않아서 정렬에 효과적이지 못하는 등의 다이내믹 매핑의 단점 완화 가능
  • 매핑은 한 번 고정된 필드에 대해서는 수정할 수 없으므로 신중해야 한다. (추가는 가능하지만 수정 및 삭제는 불가)

 

도큐먼트 수정도 가능하지만 고비용이므로 추천되지 않는다.

 

필드

  • Text : 텍스트 분석기가 텍스트를 작은 단위인 토큰으로 분리.
  • 역인덱싱 : 분리된 토큰들은 인덱싱됨
  • 용어 (term) : 역인덱스에 저장된 토큰들
  • Keyword : 텍스트 분석기의 분석 없이 원문 통째로 인덱싱

댓글