ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 엘라스틱서치 업데이트 API [doc] ( detect_noop, doc_as_upsert )
    공부하기/엘라스틱서치 2024. 2. 25. 15:04
    • 지정한 문서 하나를 업데이트한다.
    • 요청 본문에 doc 또는 script를 지정하여 업데이트할 내용을 기술한다.
    • 기본적으로 부분 업데이트(partial update)로 동작한다.
    • _source를 비활성화시킨 경우 업데이트 API를 사용할 수 없다.

     

    doc에 내용을 직접 기술하는 업데이트 문법

    POST 인덱스이름/_update/_id값
    {
    	"doc": {
        	... 업데이트 할 내용
        }
    }

     

     

    초기 문서 조회
    title 내용 변경 및 새로운 필드 추가(updated_at)
    다시 조회한 결과 정상적으로 부분 업데이트가 적용된걸 확인

     

    detect_noop

    • 엘라스틱서치는 업데이트 작업 수행 전 요청이 noop(no operation) 요청인지 확인하고 noop 요청이라면 쓰기 작업을 수행하지 않는다.
    • noop을 검사하면 불필요한 디스크 I/O를 줄일 수 있다.
    • 업데이트 요청에 detect_noop 옵션을 false로 요청하면 detect_noop은 비활성화된다.
    • 대부분의 경우 detect_noop을 수행하는것이 좋으나, 시스템 특성상 noop이 발생할 가능성이 없다면 비활성화하는 것이 약간의 성능 향상에 도움이 된다.
    • 커스텀 플러그인을 사용하는 경우
      • noop인 경우 색인 작업을 수행하지 않는다.
      • 커스텀 플러그인 중 preIndex, postIndex 메서드를 수행하는 경우 색인 작업을 하지 않기 때문에 에러가 발생할 수 있음
      • 또 detect_noop의 경우 클라이언트에서 지정할 수 있으므로 설계 시 유의해야한다.

    동일한 업데이트 요청을 하는 경우

     

    doc_as_upsert

    • 기존 문서가 없을 때 새로 문서를 추가한다.
    • 문서가 존재한다면 문서를 업데이트한다.

    문서가 존재하지 않는 경우 새 문서 추가

Designed by Tistory.