인덱스
- 문서가 저장되는 논리적인 공간
- 인덱스(테이블) 을 설계하는것이 기초
- 일반적으로 하나의 인덱스로 시작해서 필요에 따라 인덱스를 별도로 분리하는것이 좋다
샤드
- 인덱스에 색인되는 문서가 저장되는 공간
- 하나의 인덱스는 하나 이상의 샤드를 반드시 가진다
- 프라이머리 샤드: 문서가 저장되는 원분 샤드, 색인, 검색 성능에 모두 영향을줌
- 문서들은 프라이머리 샤드에 고르게 분산되어 저장됨으로 한번 설정한후엔 바꿀수 없다
- Rule: Docs Id % Shard Num
- 레플리카 샤드
- 프라이머리의 복제본, 검색 성능에 영향을 주며 프라이머리 샤드가 망가지면 레플리카 샤드가
프라이머리 샤드가 된다
- 인덱스 템플릿을 사용하면 미리 샤드들의 개수를 설정 할 수 있다.
매핑
- 문서의 구조를 나타내는 정보 ( ES는 NoSql이 아니라 스키마를 미리 정의하지 않아도 될뿐이다 )
- 동적매핑, 정적매핑이 존재함
- 무엇이되었든 매핑 정보가 생성된 후에 데이터의 타입이 다르면 에러가 난다.
- 동적 매핑시 필요한 부분만 정적 매핑을 할 수 있다. ( 없는 부분은 자동으로 동적 매핑이 됨 )
색인
- 문서를 분석하고 저장하는 과정
- 인덱스를 생성하고, 매핑을 확인하고, 문서를 저장하는 식으로 흘러감
- 색인은 프라이머리 샤드에서 동작함
- 적절한 샤드 개수를 할당해야 색인 성능이 올라가고 성능에 많은 영향을 미침