Elasticsearch 데이터 저장소
원본 보기Elasticsearch 데이터 저장소
Elasticsearch는 Apache Lucene 기반으로 구축된 분산 검색·분석 엔진이자 확장 가능한 문서 저장소이며 벡터 데이터베이스입니다. 데이터를 JSON 문서로 저장하며 인덱스 단위로 구성합니다. 인덱스는 고유한 이름으로 접근하거나 별칭(alias) 같은 논리적 참조를 통해 다룰 수 있습니다. 각 인덱스는 자체 스키마를 가진 데이터셋을 보관하며, 이 스키마는 필드와 필드 타입을 지정하는 매핑으로 정의됩니다.
서로 독립적인 여러 데이터셋을 각각 별도의 인덱스나 데이터 스트림에 나란히 저장하고, 개별적으로 또는 한꺼번에 검색할 수 있습니다.
데이터가 늘어날수록 인덱스를 어떻게 구성하고 크기를 정하고 관리하는지가 쿼리 성능, 스토리지 비용, 운영 복잡도에 직접적인 영향을 줍니다. 이 섹션에서는 핵심 저장 개념, 데이터 구조와 동작을 설정하는 방법, 인덱스와 문서를 관리하는 방법을 다룹니다.
복원력, 확장, 성능 최적화를 포함한 프로덕션 아키텍처 지침은 프로덕션 환경에서 Elasticsearch 운영하기를 참고하세요.
Index API로 문서를 색인할 수 있습니다. 프로덕션 수집 워크플로와 파이프라인, 에이전트, Logstash 같은 관련 개념은 수집: 데이터를 Elastic으로 가져오기를 참고하세요.
Elasticsearch는 데이터를 구성하는 두 가지 주요 방식을 제공합니다.
- 인덱스: 범용 저장 단위입니다. 개별 문서를 수정하거나 삭제해야 할 때, 또는 데이터가 시간 기반이 아닐 때 인덱스를 사용하세요.
- 데이터 스트림: 로그, 이벤트, 메트릭처럼 타임스탬프가 있고 추가만 하는 데이터에 권장되는 방식입니다. 데이터 스트림은 롤링 백업 인덱스를 자동으로 관리하며 데이터 라이프사이클 관리와 기본으로 연동됩니다.
두 방식 모두 문서, 매핑, 템플릿, 별칭 같은 동일한 기본 개념을 사용합니다. 이 섹션의 설정 주제는 어느 쪽을 선택하든 동일하게 적용됩니다.
- 인덱스 기초: 인덱스 이름 지정과 별칭, 문서 구조, 메타데이터 필드, 매핑 등 인덱스의 기본 개념을 알아봅니다.
- 데이터 스트림: 로그, 이벤트, 메트릭처럼 타임스탬프가 있고 추가만 하는 시계열 데이터에 데이터 스트림을 언제 사용해야 하는지 알아봅니다. 사용자는 하나의 스트림 이름만 다루고, Elasticsearch가 뒤에서 여러 백업 인덱스를 관리합니다.
- 준실시간 검색: Elasticsearch가 새로 색인된 데이터를 색인 후 몇 초 내에 검색 가능하게 만드는 방식을 이해합니다.
인덱스를 어떻게 구성하고 관리하는지가 쿼리 성능, 저장 효율, 클러스터 확장의 용이성에 영향을 줍니다. Elasticsearch는 문서 필드 타입을 제어하고, 비정형 텍스트를 처리하고, 인덱스 설정을 표준화하고, 접근 로직을 단순화·자동화할 수 있는 도구를 제공합니다.
- 매핑: 문서와 필드가 저장·색인되는 방식을 정의합니다. 필드를 자동으로 감지하는 동적 매핑과 필드 타입 및 색인 동작을 완전히 제어하는 명시적 매핑 중에서 선택할 수 있습니다.
- 텍스트 분석: 토큰화, 정규화, 사용자 정의 분석기를 포함해 비정형 텍스트를 전문 검색에 최적화된 정형 포맷으로 변환하는 방식을 설정합니다.
- 템플릿: 새 인덱스나 데이터 스트림이 생성될 때 자동으로 적용되는 설정, 매핑, 별칭 등 재사용 가능한 인덱스 구성을 정의합니다.
- 별칭: 하나 이상의 인덱스나 데이터 스트림을 가리키는 이름 참조를 만듭니다. 별칭은 논리적 그룹이므로 디스크 레이아웃이나 데이터 구조에는 영향을 주지 않습니다. 대신 쿼리 대상 지정, 무중단 재색인, 물리적 인덱스 이름 추상화를 위한 조직 계층을 제공합니다.
Kibana UI 또는 Elasticsearch REST API로 인덱스와 데이터를 다룹니다.
- Kibana에서 인덱스 관리: Kibana의 Index Management 페이지에서 인덱스, 데이터 스트림, 템플릿, 컴포넌트 템플릿, enrich 정책을 조회하고 관리합니다.
- API로 데이터 관리: curl과 Elasticsearch REST API로 문서를 색인, 수정, 조회, 검색, 삭제합니다.
데이터가 저장되는 방식을 이해했다면, 다음 주제를 살펴보며 실제 데이터 워크플로와 성장 계획으로 넘어가세요.
- 수집: 샘플 데이터와 수동 업로드부터 자동화된 파이프라인과 API 기반 워크플로까지 다양한 수집 옵션을 살펴봅니다.
- 데이터 쿼리 및 필터링: 데이터를 검색, 필터링, 집계하고 검색 방식과 쿼리 언어를 알아봅니다.
- 데이터 라이프사이클: 데이터가 늘어남에 따라 데이터 보존, 스토리지 티어, 롤오버를 계획합니다.
- 확장 고려사항: 워크로드 증가를 평가하고 배포를 효과적으로 확장하는 방법을 알아봅니다.