[ElasticSearch] _delete_by_query 중 429 fail 이슈 정리

Woong·2022년 8월 17일
0

ElasticSearch

목록 보기
7/28

이슈 대응시 상황 요약

  • _delete_by_query API 를 통해 HTTP status 429 발생하며 삭제되지 않는 현상
    • 해당 index는 rolling 처리가 되어있지 않았다.
  • 시험 당시 document 약 2억개, datanode 3개, 각 노드 heap 256MB
    • 저사양인 리소스 대비 document가 많았던 상황
    • 지정된 보존기간 대비 오래된 데이터가 삭제되지 않고 누적되어있었다.

대응한 내용

  • _search API 처럼 _delete_by_query 도 size 를 통해 한번에 삭제할 document 갯수를 제어할 수 있다.

    • ex) POST <index_name>/_delete_by_query?q=<query>?size=500000
  • 삭제할 document 수가 과도할 경우, size 옵션을 통해 분할 삭제 진행

방지를 위해...

  • index 자체에 rollover API 를 통해 index 가 과도하게 커지지 않도록 조치가 필요하다.
    • 날짜, document 수, 용량 등 기준은 커스텀해서 지정
    • ※ security 활성화시 manage 권한 필요
POST /<rollover-target>/_rollover/
POST /<rollover-target>/_rollover/<target-index>
  • 혹은 ILM 을 통해 index 생명주기를 관리한다.
    • ILM : Index Lifecycle Management

reference

0개의 댓글