1 minute read

ElasticSearch의 Delete 기능은 특정 문서를 색인에서 삭제하는 과정입니다. Delete 작업은 HTTP DELETE 요청을 통해 이루어지며, 문서를 삭제하면 해당 데이터는 더 이상 검색 결과에 나타나지 않게 됩니다.

1. 특정 문서 삭제

특정 문서를 삭제하려면 DELETE 요청을 사용하여 색인에서 문서의 ID를 기반으로 삭제할 수 있습니다.

# 예제

DELETE /my_index/_doc/1

이 요청은 my_index 색인에서 ID가 1인 문서를 삭제합니다.

# 응답

{
  "_index": "my_index",
  "_id": "1",
  "_version": 2,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

응답에서는 문서가 성공적으로 삭제되었음을 나타내는 "result": "deleted" 필드를 확인할 수 있습니다.

2. 색인 전체 삭제

특정 색인 내의 모든 문서를 삭제하려면 _delete_by_query 엔드포인트를 사용합니다. 이는 특정 조건에 맞는 모든 문서를 삭제하는 기능으로 매우 강력하며, 잘못 사용하면 중요한 데이터를 잃을 수 있으므로 주의해야 합니다.

2.1 특정 조건을 기반으로 삭제

아래 예제는 my_index 색인에서 user 필드가 “홍길동” 인 모든 문서를 삭제하는 요청입니다.

# 예제

POST /my_index/_delete_by_query
{
  "query": {
    "match": {
      "user": "홍길동"
    }
  }
}
# 응답

{
  "took": 78,
  "timed_out": false,
  "total": 1,
  "deleted": 1,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": []
}

응답에서는 삭제된 문서의 수를 deleted 필드에서 확인할 수 있습니다.

2.2 색인의 모든 문서 삭제

색인 내의 모든 문서를 삭제하려면 match_all 쿼리를 사용합니다. 이 요청은 해당 색인에서 모든 문서를 삭제하므로, 신중히 사용해야 합니다.

# 예제

POST /my_index/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}

이 요청은 my_index 색인 내의 모든 문서를 삭제합니다.

# 응답

{
  "took": 120,
  "timed_out": false,
  "total": 10,
  "deleted": 10,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": []
}

이 응답에서는 총 10개의 문서가 삭제되었음을 deleted 필드에서 확인할 수 있습니다.

3. 색인 자체 삭제

색인 자체를 삭제하려면 DELETE 요청을 색인 이름과 함께 사용합니다. 이 작업은 색인 내의 모든 문서와 색인 자체를 완전히 제거합니다.

# 예제

DELETE /my_index

# 응답

{
  "acknowledged": true
}

이 예제는 my_index 색인 삭제 요청에 대한 것으로, 응답에서의 "acknowledged": true는 색인이 성공적으로 삭제되었음을 의미합니다.

Categories:

Updated:

Leave a comment