ElasticSearch 인덱스(Index)란?
ElasticSearch에서 인덱스(Index)는 유사한 특성을 가지고 있는 문서를 모아둔 문서 컬렉션이다.
(Document를 저장하는 논리적 단위라고 볼 수 있다. )
Ex) 고객정보, 상품정보, 주문정보 등이 각 인덱스가 될 수 있다.
관계형 데이터베이스로 보자면 테이블과 유사한 개념이다.
MySQL | 엘라스틱서치 |
테이블 | 인덱스 |
레코드 | 도큐먼트 |
컬럼 | 필드 |
스키마 | 매핑 |
클러스터 내부에 생성되는 모든 인덱스는 클러스터 내에서 유일한 인덱스명을 가져야 한다.
인덱스 명을 이용해서 데이터 생성, 수정, 삭제, 검색(CRUD)이 이뤄지므로 중요한 요소이다.
(인덱스명은 모두 소문자)
(255 바이트를 넘을 수 없다)
과거에는 인덱스 내부에 여러 개의 타입을 생성하는 것이 가능했지만, 현재 인덱스에는 하나의 타입만 생성해야 한다.
만약 논리적으로 분리할 필요가 있다면, 인덱스를 물리적으로 분리해서 생성해야 한다.
인덱스를 구분하는 그룹핑의 방법은 여러가지가 있다.
여기서 2가지를 설명한다.
[스키마에 따른 그룹핑]
가장 일반적으로는 스키마에 따라 인덱스를 구분한다.
예를들어, 회원정보, 장바구니 등 성격이나 스키마가 다른걸 구분한다.
(회원정보에는 이름,나이 등의 필드 / 장바구니에는 상품,날짜등의 필드)
이것이 가장 기본적인 구분 사항이다.
[관리 목적의 그룹핑]
일/주/월/년 단위 같은 날짜 단위로 인덱스를 분리하기도 한다.
그러면 특정 날짜의 데이터를 쉽게 처리할 수 있다.
Ex) 1개월이 지난 데이터를 모두 삭제하고 싶다는 가정을 해보면,
월 단위로 분리하지 않았다면, 모든 도큐먼트를 확인하고 개별 삭제해야 하지만,
월 단위로 분리하였다면, 1개월전의 인덱스만 삭제하면 된다.
빅데이터를 다루는 경우, 데이터 정제 작업이 많은데, 이를 효율적으로 처리하기 위해 관리 목적용으로 그룹핑을 하기도 한다.
책 : 엘라스틱서치 실무 가이드 (위키북스)
책 : 엘라스틱 스택 개발부터 운영까지(책만)