반응형
인덱스에서 특정 시간 기준으로 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 들을 삭제할 수 있다.
반응형
'elasticsearch' 카테고리의 다른 글
[elasticsearch] 노드별 디스크 사용량 확인 쿼리 (0) | 2022.03.25 |
---|---|
[elasticsearch] 시간순서대로 가장 최근 document 가져오는 쿼리 (0) | 2021.10.12 |
[elasticsearch] document의 특정 필드값 수정하기 - POST API/python (0) | 2021.06.26 |
[elasticsearch] 엘라스틱서치 리인덱싱(reindexing) - 같은서버, 다른서버 (0) | 2020.03.02 |
[elasticsearch] 샤드 개수 설정하기 (0) | 2020.03.02 |