개발 이야기/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가 별도로 있다면 굳이 백업하지 않아도 상관없겠죠.
끝!
반응형