ElasticSearch 시스템 구조
클러스터 - 독립된 ElasticSearch 시스템 환경. 1개 이상의 노드로 구성
노드 - 실행중인 ElasitcSearch 시스템 프로세스
도큐먼트 - 저장된 단일 데이터 단위
인덱스 - 도큐먼트의 논리적 집합. 1개 이상의 샤드로 구성
샤드 - 색인 & 검색을 진행하는 작업 단위
샤드는 기본저으로 프라이머리 샤드와 복제본으로 구성
갹 샤드들은 클러스터 내의 노드들에 분산되어 저장
같은 프라이머리 샤드와 복제본은 같은 데이터셋을 담고 있으며 반드시 다른 노드에 저장
데이터 노드가 1개인 경우 복제본은 생성되지 않음
복재본을 통해 무결성을 유지
노드가 유실되면 남아있는 샤드의 데이터를 다른 노드로 복사
각 인덱스 별로 프라이머리 샤드와 복제본 세트 수 설정
PUT books
{
"settings" : {
"index" : {
"number_of_shards" : 5,
"number_of_replicas" : 1
}
}
}
프라이머리 샤드는 처음 인덱스를 생성하는 시점에 설정 이후 변경 불가능
사용자는 어떤 도큐먼트가 어떤 샤드에 적재되는지 알 수 없음 (알 필요 없음)
검색 시, 요청을 받은 노드 (= coordinate node) 는 해당되는 모든 샤드에 검색 명령 전달
-> 검색은 샤드별로 분산되어 실행 된 후 결과는 coordinate node 에서 취합되어 클라이언트로 전달
POST _aliases
{
"actions" : [
{
"add" : {
"index" : "my-log-0000",
"alias" : "my-logs"
}
}
]
}
POST my_logs/_rollover
{
"conditions" : {
"max_age" : "7d",
"max_docs" : 1000,
"max_size" : "10gb"
}
}
Rollover 는 조건에 만족될 떄 자동 생성이 아니라 POST 명령을 입력해야 생성됨
-> ILM (index lifecycle management) 로 제어하는 것이 바람직