기록하는 습관

Elasticsearch (12) - Update By Query vs. Reindex 본문

개발/Elasticsearch

Elasticsearch (12) - Update By Query vs. Reindex

로그뉴 2022. 7. 16. 14:56

참고) Reindex 관련 글: https://flexiblecode.tistory.com/157

 

Elasticsearch (3) - reindex

** Elasticsearch를 공부하며 정리한 글입니다. Elasticsearch에서는 인덱스 매핑 정보가 바뀌면 업데이트 하는 과정이 어렵다. reindex를 통해 다시 인덱스 생성을 한 후 reindex api 호출을 통해 기존 인덱

flexiblecode.tistory.com

 

Update By Query 기능

  1. 조건에 맞는 필드를 탐색 후 업데이트
  2. 사전을 반영하는 문서 재색인

 

ES 사전 반영을 위해서는 2가지 방법을 사용할 수 있다.

  1. Update By Query API 사용
    1. 사전 반영을 위해서 update by query API 호출 전 index를 close/open 해야 하는 선작업이 반드시 필요
      1. 만약, close/open을 하지 않고 update by query api를 호출하게 되면 ES dictionary를 업데이트 하더라도 분석기에는 반영되지 않았기 때문에 사전 반영이 되지 않는다. 
    2. 인덱스를 새로 만드는 것이 아니기 때문에 인덱스 관리 비용이 reindex에 비해서 적다.
    3. 옵션으로 version_confilct 발생시 proceed 할 수 있도록 하며, scroll_size를 default 1000에서 n으로 낮춰 cpu 사용률을 낮출 수 있다.
  2. Reindex API 사용
    1. update by query와 다르게, 새로운 인덱스를 생성하기 때문에 index close/open을 할 필요 없이 analyzer가 업데이트 된 dictionary를 인덱스 생성 시점에 불러오게 된다.
    2. 인덱스를 새로 생성하므로 관리 비용이 상대적으로 크고, reindex 도중에 게시글이 업데이트 될 경우에 대한 대비가 필요하다.
Comments