[엘라스틱 스택의 구성 요소]
- 엘라스틱 서치
- 루씬 기반으로 만들어짐. (루씬은 라이브러리 형태라 더 필요한 개발이 많았으나 엘라스틱서치는 애플리케이션)
- 전문 검색(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 : 텍스트 분석기의 분석 없이 원문 통째로 인덱싱
'TIL > 엘라스틱 서치' 카테고리의 다른 글
Elastic Search : Complete Guide to ElasticSearch - 낙관적 동시성 제어 (0) | 2024.01.14 |
---|---|
Elastic Search : Complete Guide to ElasticSearch - 도큐먼트 라우팅 (0) | 2024.01.08 |
Elastic Search : Complete Guide to ElasticSearch - 도큐먼트 관리 (0) | 2024.01.08 |
Elastic Search : Complete Guide to ElasticSearch - 클러스터링과 샤딩 (1) | 2024.01.04 |
Elastic Search : 엘라스틱 스택 개발부터 운영까지 - 2 (1) | 2024.01.03 |
댓글