728x90
반응형
elasticsearch는 ALTER와 같은 필드(컬럼)을 삭제하는 기능을 제공하지 않는다. 그렇기 때문에 사용하지 않는 필드는 비활성화 시키고 사용하는데 이것들이 남아서 매핑이 더러워 보이기 때문에 보기에 좋지 않다. 또한 필드에 계속 데이터가 들어가면 낭비되는 데이터가 쌓일 수 있다.
POST /_reindex
{
"source": { "index": "log" },
"dest": { "index": "tmp" }
}
POST /tmp/_update_by_query
{
"script": {
"source": "ctx._source.remove(\"field_name1\")"
}
}
POST /tmp/_update_by_query
{
"script": {
"source": "ctx._source.remove(\"field_name2\")"
}
}
DELETE /log
POST /_reindex
{
"source": { "index": "tmp" },
"dest": { "index": "log" }
}
DELETE /tmp
위 쿼리를 단계 별로 설명하면
- 임시 인덱스에 기존 인덱스를 리인덱스 하여 백업
- 스크립트로 원하는 필드를 삭제
- 기존 인덱스 삭제
- 기존 인덱스로 임시 인덱스 복사
- 임시 인덱스 삭제
엘라스틱서치는 필드 생성이 쉽고 간편한 대신 필드 삭제에서 많이 귀찮은 것 같다.
728x90
반응형
'SRE > ELK' 카테고리의 다른 글
[elasticsearch] grok 이용해서 string에서 값 추출해서 필드로 매핑하기 (0) | 2023.06.21 |
---|---|
Kafka + Elasticsearch + Kibana + Docker-compose로 Xpack 보안 인증 구축 (0) | 2023.06.21 |