엘라스틱서치의 구조
엘라스틱서치는 아파치 루씬을 기반으로 하는 분산 검색 엔진임.
이 구조는 매우 유연하고 확장 가능하며, 실시간 데이터 검색과 분석을 위한 강력한 기능을 제공함.
1. 노드와 클러스터
1.1 노드
엘라스틱서치에서 하나의 서버 인스턴스를 노드라고 부름.
각 노드는 클러스터의 일부로서 데이터를 저장하고 클러스터의 색인 생성, 검색 기능을 처리함.
1.2 클러스터
여러 노드가 모여 하나의 클러스터를 형성함.
클러스터는 전체 데이터를 저장하고, 모든 색인 및 검색 기능을 관리함.
클러스터는 하나 이상의 노드로 구성될 수 있으며, 하나의 노드만으로도 클러스터를 형성할 수 있음.
2. 인덱스
엘라스틱서치의 인덱스는 유사한 특성을 가진 문서들의 집합임.
인덱스는 관계형 데이터베이스의 데이터베이스와 비슷한 개념으로 이해할 수 있음.
검색을 위해 최적화된 구조를 가짐.
3. 타입과 매핑
3.1 타입
엘라스틱서치 7.x 버전 이전에는 하나의 인덱스에 여러 타입을 정의할 수 있었음.
하지만 현재는 인덱스당 하나의 타입만을 권장함.
3.2 매핑
매핑은 데이터베이스에서 스키마에 해당함.
문서의 필드와 데이터 타입을 정의함.
이는 엘라스틱서치가 어떻게 데이터를 색인화하고 저장할지를 결정함.
4. 샤드와 복제
4.1 샤드
엘라스틱서치는 인덱스를 여러 샤드로 나누어 데이터를 분산 저장함.
이는 인덱스의 데이터가 매우 클 경우에도 검색을 효율적으로 할 수 있도록 함.
샤드는 기본적으로 루씬 인덱스임.
4.2 복제
각 주 샤드는 하나 이상의 복제 샤드를 가질 수 있음.
이는 데이터의 안정성과 고가용성을 보장하며, 검색 로드를 분산시키는 데에도 도움이 됨.
5. 문서와 문서ID
엘라스틱서치에서 데이터의 기본 단위는 문서임.
JSON 형식으로 저장되며, 각 문서는 유일한 ID에 의해 식별됨.
6. 색인과 검색
6.1 색인
새로운 문서를 엘라스틱서치에 추가할 때, 루씬 색인 작업이 이루어짐.
이 과정에서 문서의 데이터가 샤드에 저장되며, 빠른 검색을 위한 색인이 생성됨.
6.2 검색
사용자가 쿼리를 제출하면, 엘라스틱서치는 빠르게 관련 문서를 찾아 반환함.
복잡한 쿼리를 처리할 수 있으며, 여러 샤드에 걸쳐 병렬로 검색 작업이 수행됨.
엘라스틱서치의 구조 정리
엘라스틱서치의 이러한 구조는 대량의 데이터를 효과적으로 처리할 수 있음.
실시간으로 빠른 검색 결과를 제공할 수 있음.
클라우드 환경과 같은 동적으로 변하는 리소스를 효율적으로 관리할 수 있게 해줌.
엘라스틱서치의 색인
엘라스틱서치에서 색인은 매우 중요한 과정임.
이는 데이터를 검색 가능한 형태로 반환하고 저장하는 과정을 의미함.
엘라스틱서치의 색인 생성은 아파치 루씬에 기반을 두고 있음.
이 과정은 여러 단계로 구성되어 있음.
1. 문서 수집과 분석
1.1 문서 수집
엘라스틱서치에 데이터를 색인하기 위해서는 먼저 JSON 형태의 문서가 입력되어야 함.
각 문서는 고유한 ID를 가지며, 하나의 인덱스에 저장됨.
1.2 분석
문서가 입력되면, 엘라스틱서치는 분석기를 사용하여 텍스트를 토큰화하고, 필터링 과정을 거쳐 색인을 위한 토큰을 생성함.
분석기는 크게 토크나이저와 토큰 필터로 구성됨.
토크나이저는 텍스트를 개별 단어나 표현으로 분리하며, 토큰 필터는 소문자화, 불용어 제거, 동의어 처리 등을 수행함.
2. 색인 생성
2.1 루씬 색인
분석 과정을 통해 생성된 토큰은 루씬 색인에 저장됨.
루씬 색인은 역 인덱스 구조를 사용하여 각 토큰과 그 토큰이 등장하는 문서들의 리스트를 매핑함.
이 구조는 빠른 전문 검색을 가능하게 함.
2.2 문서 저장
색인 과정에서 원본 문서도 함께 저장됨.
이는 검색 결과에서 전체 문서를 빠르게 조회할 수 있게 해줌.
3. 샤딩과 복제
3.1 샤딩
색인된 데이터는 인덱스의 샤드로 분할되어 저장됨.
샤드는 물리적으로 다른 루씬 인덱스이며, 각 샤드는 클러스터의 다른 노드에 위치할 수 있음.
이는 데이터와 검색 부하를 분산시켜 시스템의 확장성과 성능을 향상시킴.
3.2 복제
각 주 샤드는 하나 이상의 복제 샤드를 가질 수 있음.
복제 샤드는 주 샤드의 정확한 복사본으로, 주 샤드가 실패했을 때 데이터의 안정성을 보장하고, 읽기 쿼리의 부하를 분산시키는 역할을 함.
4. Near Real Time (NRT) 검색
엘라스틱서치는 Near Real Time 검색을 지원함.
색인된 문서는 색인 후 짧은 지연 시간(기본적으로 1초) 이후에 검색 가능함.
이는 리프래시 작업을 통해 이루어지며, 리프래시는 새로 색인된 데이터를 검색할 수 있도록 샤드의 내부 색인을 업데이트함.
5. 색인 최적화
5.1 색인 병합
루씬은 정기적으로 색인을 병합하여 색인 크기를 관리하고 검색 성능을 최적화함.
병합 과정은 여러 작은 색인 파일을 하나의 큰 색인 파일로 결합하는 것을 포함함.
엘라스틱서치의 색인 정리
엘라스틱서치의 색인 과정은 데이터를 신속하게 검색 가능하게 만듬.
대규모 분산 환경에서도 효과적으로 작동하도록 설계됨.
이러한 고도의 최적화는 엘라스틱서치를 실시간 데이터 분석과 대규모 검색 엔진 구축에 매우 적합하게 만듬.
'Database > ElasticSearch' 카테고리의 다른 글
[ES] 엘라스틱서치의 인덱스, 인덱스 수명주기 관리 (ILM) (0) | 2024.06.07 |
---|---|
[ES] 엘라스틱서치의 장점 (0) | 2024.06.07 |
[logstash] input file output mysql pipeline .conf (0) | 2021.09.20 |
[logstash] input file output minio pipeline .conf (0) | 2021.09.20 |
[logstash] input api output elasticsearch pipeline .conf (0) | 2021.09.20 |