관리 메뉴

가끔 보자, 하늘.

Elasticsearch 에서 특정 날짜 데이터 재구축이 필요할 때 본문

개발 이야기/DB, 데이터분석, AI

Elasticsearch 에서 특정 날짜 데이터 재구축이 필요할 때

가온아 2023. 12. 27. 11:15

예들들어 data_type이 10001인 2023년 12월 25일 데이터를 모두 지우고 재구축하고 싶다면 kibana DevTools혹은 api를 이용해 다음과 같은 순서로 진행합니다.

1. 우선  count api를 이용해 삭제할 수량 확인 및 검증합니다.

# index 파일을 날짜로 구분할 경우 한국은 +9 이므로 한국 시간 기준 0시부터 9시까지의 데이터는 logstash-2023.12.24에 포함됩니다.
# 그러므로 logstash-2023.12.24에서도 동일한 쿼리를 실행해야 한국시간 기준으로 정확힌 데이터를 확인할 수 있습니다.
GET /logstash-2023.12.25/_count 
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "data_type": "10001"
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": "2023-12-24T15:00:00"
            }
          }
        }
      ]
    }
  }
}

2. 삭제하려는 데이터가 맞다면 delete api를 이용해 삭제합니다.

# 역시 12.24 인덱스에서도 document 삭제를 요청해야 합니다.
POST /logstash-2023.12.25/_delete_by_query
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "data_type": "10001"
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": "2023-12-24T15:00:00"
            }
          }
        }
      ]
    }
  }
}

실행전에 백업이 필요하다면 snapshot으로 백업을 해두시거나 raw data가 별도로 있다면 굳이 백업하지 않아도 상관없겠죠. 

끝!

반응형

'개발 이야기 > DB, 데이터분석, AI' 카테고리의 다른 글

Chat with RTX 사용기  (32) 2024.02.19
수식없이 LLM 이해하기  (32) 2024.02.15
MySQL/MariaDB에 TLS 적용하기  (1) 2023.12.08
Elasticsearch x_content_parse_exception 에러  (1) 2023.12.07
MariaDB TDE 적용  (1) 2023.11.30