네른

[ElasticSearch] 번외 - ILM 적용 본문

DevOps

[ElasticSearch] 번외 - ILM 적용

네른 2022. 5. 11. 19:43

약간 번외 느낌인데, Elasticsearch를 사용하다가 쌓인 데이터를 어떻게 처리할까? 에 대해 고민하다가 찾아봤다.

디스크가 터질 것 같았기 때문.

ILM(Index Lifecycle Management)인데, 말그대로 elasticsearch index들의 수명을 어떻게 처리할지이다.

 

주로 Hot, warm, cold, delete 페이즈를 지정해서 일정 기간이 지나도록 접근이 없거나 접근 횟수가 낮으면 중요도를 점점 낮추다가 삭제하는 방식.

 - 기본적으로 hot-warm-cold 방식을 기반으로 동작

 - 자주 접근되는 인덱스는 hot, 일정 기간 이상 접근되지 않으면 warm -> cold 순으로 내려감

 - cold 상태에서도 일정 기간 이상 접근되지 않으면(데이터 조회나 추가가 없으면) delete 페이즈로 진입. 일정 기간 이후 데이터 삭제

 - warm과 cold는 없어도 된다.

 

 

적용은 Kibana를 통해서도 할 수 있는데, 다음과 같다.

 - Kibana의 Index Lifecycle Policies 메뉴에서 설정 가능함.

 - 우선, policy를 설정해야 한다. 이는 앞서 말한 hot-warm-cold의 기간 등을 설정하는 부분.

 - 이후, index management에 가서 index 생성.

    : 주의할 점! 이 때 mapping 옵션에서 dynamic mapping이 반드시 켜져있어야함

      왜??? 그래야 지정된 필드가 아닌 추가적인 옵션을 index에 줄 수 있음

 - index 생성할 때, policy를 지정해서 적용해주면 해당 index에 원하는 lifecycle policy를 지정해 줄 수 있다!!

 - 만약 api로 ILM이 확인하고싶으면 /_ilm/policy/ 를 통해 접근 가능함

   {
    "policy": {
      "phases": {
        "hot": {
          "min_age": "0ms",
          "actions": {
            "set_priority": {
              "priority": 100
            }
          }
        },
        "delete": {
          "min_age": "7d",
          "actions": {
            "delete": {}
          }
        }
      }
    }
  }

api에 이런식으로 요청을 보내 policy를 지정할 수 도 있음. 예시는 hot과 delete만 있음.

 

Comments