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 |