-
엘라스틱서치 인덱스 설정 조회 및 생성카테고리 없음 2024. 2. 12. 19:03
인덱스 설정
-> 이전 문서에서 인덱스를 따로 생성하지 않았습니다.
-> 엘라스틱서치는 존재하지 않는 인덱스에 문서 색인 요청이 오면 자동으로 인덱스를 생성합니다.
인덱스 설정 조회
문법
GET 인덱스이름/_settings
-> 실습 : GET local_test_index/_settings
자동으로 생성된 인덱스 설정 -> number_of_shards :
- 인덱스가 데이터를 몇개의 샤드로 나눌 것인지 지정하는 값
- 한번 지정하면 reindex 같은 동작을 통해 인덱스를 통째로 재색인하지 않으면 바꿀 수 없음
- 샤드 개수를 어떻게 지정하느냐는 클러스터 전체의 성능에 큰 영향을 미친다.
- 샤드 숫자가 많아지면 클러스터 성능이 떨어진다.
- 샤드 숫자가 적으면 샤드의 크기가 너무 커진다. -> 장애 상황에서 샤드 복구에 많은 시간이 소요된다.
-> number_of_replicas :
- 주 샤드 하나당 복제본 샤드를 몇개를 생성할 것인지를 지정
- 클러스터에 몇 개의 노드를 붙일 것이며 어느 정도의 고가용성을 제공할 것인지를 고려해서 지정해야한다.
- 인덱스를 생성한 후에도 동적으로 변경할 수 있다.
- PUT 인덱스이름/_settings { "index.number_of_replicas": 0 } 등의 요청으로 바꿀 수 있음
- 0으로 설정할 경우 복제본 샤드를 생성하지 않음
- 변경 요청이 성공한 경우 { acknowledged: true }인 응답을 받음
-> refresh_interval : 위 응답에는 존재하지 않지만 매우 중요한 인덱스 설정
- 해당 인덱스를 대상으로 refresh를 얼마나 자주 수행할 것인지를 지정
- 엘라스틱서치 인덱스에 색인된 문서는 refresh 되어야 검색 대상이 되기 때문에 매우 중요하다.
- PUT 인덱스이름/_settings { "index.refresh_interval": "1s" } 명령으로 값을 지정할 수 있다.
- -1로 지정할 경우 주기적으로 refresh를 수행하지 않는다.
- 이미 설정된 값을 없애려면 null값으로 위 요청을 하면된다.
- 명시적으로 설정되어 있지 않은 경우 1초마다 refresh를 수행한다.
- 마지막 검색 쿼리의 시각을 확인하고 30초 이상 검색 쿼리가 들어오지 않으면 첫 검색 쿼리가 들어올때까지 refresh를 하지 않는다.
- 30초의 대기시간 값을 바꾸려면 위 요청의 바디값을 "index.search.idle.after": "원하는값"으로 변경 가능하다
인덱스 생성 ( 기본 )
문법
PUT 인덱스이름
-> 실습 : PUT local_index
수동으로 index 생성 -> acknowledged : 타임아웃 제한시간안에서 클러스터에 인덱스가 생성되었는지 여부를 나타냅니다. ( 또는 클러스터 상태 업데이트에 성공 여부 )
-> shards_acknowledged : 타임아웃 제한시간안에 지정한 개수만큼 샤드가 활성화되었는지 여부
- 두 값이 false라고 반드시 인덱스 생성에 실패한 것은 아니며 단지 타임아웃 내 실패했을 수 있음
- 두 값이 false 값이라도 일정 시간이 지난 후 생성될 수 있음
인덱스 생성 ( 옵션 설정 )
문법
PUT 인덱스이름 { "settings": { ... } }
-> 실습 : PUT local_idx { "settings": {"number_of_shards": 2, "number_of_replicas": 2}}
옵션을 지정한 인덱스 생성 -> 옵션이 재대로 지정되었는지 [ GET 인덱스이름 ] 요청을 통해 체크해야한다.