반응형

Elasticsearch란

검색 및 분석을 위한 분산형 오픈소스 데이터베이스

데이터를 index라는 구조로 저장하고, 이를 통해 빠르고 유연한 검색이 가능

 

Document : Elasticsearch에서 데이터의 최소 단위(예 : JSON 형식의 데이터)

Index : Document들이 모여있는 데이터베이스와 유사한 개념

Cluster/Node : 여러 개의 Index와 데이터를 저장하는 서버환경

 


Elasticsearch  데이터 삭제 방법

 

1. 인덱스 전체 삭제

DELETE /index_name

 

2. 조건에 맞는 Document 만 삭제

POST /index_name/_delete_by_query
{
  "query": {
    "match": {
      "field_name": "value" // field_name, value 특정 조건
    }
  }
}

3. Document ID 로 특정 데이터 삭제

DELETE /user_data/_doc/123

 

 

엘라스틱서치 데이터 삭제시 주의해야할 사항으로는

데이터 복구가 불가능하기 때문에 삭제한 중요한 데이터는 삭제 전 백업이 꼭 필요하다.

 

Elasticsearch 대량 삭제가 다른 작업에 미치는 영향

읽기

Elasticsearch는 분산형 아키텍처를 사용하기 때문에, 대량 삭제 작업이 진행되는 동안 검색 및 조회 가능하다

삭제 작업이 클러스터에 높은 부하를 줄 경우, 일부 검색 쿼리의 응답 속도가 느려질 수 있다

쓰기

삭제 작업은 노드 리소스를 소비하므로, 동시에 대량 데이터를 추가하거나 갱신하려는 작업이 진행중이면 성능 저하가 발생할 수 있다

 

_delete_by_query  사용시 데이터를 검색하고 삭제하므로 CPU와 디스크 I/O를 많이 사용

작업의 양이 많아질 경우 성능 서하가 발생할 수 있다

 

성능 저하를 최소화하는 방법

. 사용자 활동이 적은시간(업무 외 시간, 야간)에 삭제 작업을 진행

. 삭제 작업을 분할 처리

: 삭제 작업을 한번에 하지 않고 적게 나눠서 삭제한다.

. Throttling 설정

: request_per_second 값을 설정하여 삭제 제한 설정

ex) 초당 100건 삭제 제한

POST /index_name/_delete_by_query?requests_per_second=100
{
  "query": {
    "match_all": {}
  }
}

. Cluster 상태 모니터링

Kibana의 Monitoring 이나

/_cat/health

명령어를 사용해 클러스터 상태 모니터링

* 상태가 green  일 경우 클러스터가 안정적 상태라는 뜻

 


회사 업무 작업 전 정리 중.

연습삼에 로컬 컴퓨터에 환경을 구축해서 실험해볼 예정이다.

반응형

+ Recent posts