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 들을 삭제할 수 있다.
반응형