elasticsearch

[elaticsearch] 특정 시간 기준으로 document들 삭제하기

lim 2021. 3. 9. 22:43
반응형

 

 

인덱스에서 특정 시간 기준으로 document를 지우고 싶다면,

_delete_by_query에서 range에 시간 조건을 추가해서 지울 수 있다.  

예제를 통해서 살펴보자.

 

만약 user라는 index에서 @timestamp가 2020년 7월 1일 이후인 document를 지우고 싶다면 아래와 같이 쿼리를 사용한다.

POST user/_delete_by_query
{
  "query":{
    "range":{
      "@timestamp":{ "gte" : "2020-07-01T00:00:00+09:00"}
    }
  }
}

range에서 gte는 greater than or equal로 같거나 큰 값을 뜻한다. 범위 조건에 대한 내용은 아래와 같다.

 

파라미터 의미
gt 크다 (greater than)
lt 작다 (less than)
gte 크거나 같다 (greater than or equal)
lte 작거나 같다  (less than or equal)

 

만약 user라는 index에서 @timestamp가 2020년 7월 1일 이후 (0시 0분 0초 포함)와 2020년 10월 이전의 데이터를 삭제하고 싶다면 아래와 같이 조건을 줄 수 있다.

POST user/_delete_by_query
{
  "query":{
    "range":{
      "@timestamp":{ "gte" : "2020-07-01T00:00:00+09:00", "lt" : "2020-10-01T00:00:00+09:00"}
    }
  }
}

2020년 10월 1일 0시 보다 작은 구간인 "lt" 파라미터를 추가하여 위의 시간 구간에 해당하는 document 들을 삭제할 수 있다.

 

반응형