ES03 데이터 색인,변경,삭제

최대 1 분 소요

ES에서 데이터 색인, 변경, 삭제 이해

매핑

매핑 없이 바로 색인할 경우 자동으로 데이터 유형에 따라 매핑이 만들어지지만 사용자가 직접 타입을 지정하고 싶을경우에는 매핑을 색인전에 수행되어야 한다.

6.x버전에서는 type별 매핑을 지정할 수 없게 되었다. 하나의 매핑을 만들고 각 type에서 공유해서 쓰는방식으로 변경해야 한다.
[6.x수정] (https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html “멀티매핑이슈”)

색인

추가 예정

변경

변경 시나리오는 아래와 같습니다.

  • 변경 시나리오
- 기존 다큐먼트를 조회
- 명시된 변경 사항을 반영
- 기존 다큐머트를 삭제하고 대신 같은 자리에 변경사항이 반영된 새 도큐먼트를 색인한다. 

동시에 다큐먼트를 변경할 경우 동시성 이슈가 발생 할 수 있다.

  • 버전관리로 동시성 제어하기 다큐먼트에 버전정보를 관리하여 버전이 바뀔경우 버전이 갱신된다. 버전이 1>2>3으로 진행 된 상황에서 버전 다시 3으로 업으려고 하면 에러가 발생되며 발생한 세션에서는 실패처리가 된다. 재시도 옵션을 통해서 재시도 횟수만큼 시도하여 동시성 이슈를 감소 시킬 수 있다.
(예제)
curl -XPOST "/index10/1/_update?retry_on_conflict=3" -d '{
  "script":"ctx._source.price = 2"
}'

삭제

삭제는 바로 삭제하지 않고 삭제 플래그를 표시하고 조회에서는 제외 시킨다. 그 후 세그먼트 머지단계에서 삭제가 비동기적으로 진행된다.

세그먼트와 병합

세그먼트는 색인할 때 생성되는 루씬의 색인 또는 샤드의 덩어리라고 생각하면 된다. 세그먼트가 많아지면 많은 IO로 인하여 성능 이슈가 발생하는데 그 이슈 때문에 루씬에서는 세그먼트를 병합하여 선능 이슈를 처리한다. 세그먼트 병합시 삭제 플래그가 붙은 다큐먼트는 삭제가 일어난다고 생각하면 된다.

카테고리:

업데이트: