인덱스를 자동으로 삭제하는 정책을 생성하여 오래된 인덱스를 자동으로 제거하여 스토리지 공간을 절약하고, 검색 성능을 향상시킬 수 있습니다.
OpenSearch는 대용량의 데이터를 저장하고 검색하는 분산 시스템입니다. 시간이 지날수록 데이터가 계속 누적되면서 스토리지 공간이 부족해지고 검색 성능이 저하될 수 있습니다. 이를 방지하기 위해 오래된 인덱스를 주기적으로 삭제하는 것이 필요합니다.
OpenSearch Service의 인덱스 상태 관리 (ISM) 를 사용하면 일상적인 작업을 자동화하는 사용자 지정 관리 정책을 정의하고 이를 인덱스 및 인덱스 패턴에 적용할 수 있습니다. 인덱스 작업을 실행하기 위해 더 이상 외부 프로세스를 설정하고 관리할 필요가 없습니다.
따라서 해당 기사에서는 OpenSearch에서는 인덱스 상태 관리 (ISM) 기능을 제공하여 인덱스의 자동 삭제 정책을 설정할 수 있는 방법에 대해서 안내합니다. sample 접두사를 가진 인덱스를 생성한뒤 1시간 뒤에 인덱스를 삭제하는 정책을 예시로 설명합니다.
테스트에 사용할 인덱스 생성
- sample를 접두사로 가진 테스트 인덱스를 생성합니다.
PUT /sample_index
인덱스를 자동으로 삭제하는 템플릿 등록
- min_index_age : 지정한 시간 이후 인덱스가 삭제 상태로 전환됩니다. (사용 사례에 따라 1h[1시간] 또는 3d[3일]로 설정할 수 있습니다)
- 지원되는 단위는 d(일), h(시간), m(분), s(초), ms(밀리초), 그리고 micros(마이크로초)입니다.
- 아래의 샘플 코드에서는 1시간 이후에 인덱스가 삭제되도록 min_index_age를 설정하였습니다.
- index_patterns : ISM 정책은 언급된 인덱스 패턴을 따르는 모든 인덱스에 적용됩니다.
- sample 접두사를 가진 인덱스는 만들어진 ISM 정책에 영향을 받아 1시간 이후에 삭제됩니다.
- 위에서 언급한 두개의 파라미터를 자신의 환경에 맞추어 설정합니다.
PUT _plugins/_ism/policies/delete_ism_policy
{
"policy": {
"policy_id": "delete_ism_policy",
"description": "A simple default policy that deletes old unused indices",
"last_updated_time": 1658834661281,
"schema_version": 13,
"error_notification": null,
"default_state": "example_hot_state",
"states": [
{
"name": "example_hot_state",
"actions": [],
"transitions": [
{
"state_name": "delete",
"conditions": {
"min_index_age": "1h"
}
}
]
},
{
"name": "delete",
"actions": [
{
"delete": {}
}
],
"transitions": []
}
],
"ism_template": [
{
"index_patterns": [
"sample*"
],
"priority": 100,
"last_updated_time": 1658834436349
}
]
}
}
인덱스 정책 설정 확인
- 인덱스 정책 확인 : Management> Index Management > State management policies 에서 확인이 가능합니다.
- ISM 정책이 설정되어있다면 아래와 같이 정책을 확인할 수 있습니다.
인덱스 삭제 확인
- 1시간 후에 아래의 명령어를 통해 인덱스를 확인해본 결과, sample 접두사를 가진 인덱스가 삭제된것을 확인할 수 있습니다.
GET _cat/indices
참고 자료
[+] Amazon OpenSearch Service의 인덱스 상태 관리
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ism.html
[+] Policies - Example policy
https://opensearch.org/docs/latest/im-plugin/ism/policies/#example-policy