update by query 과정 도식화
update by query 과정
- update by query 요청은 coordinating node에서 수신하고 처리되며 요청을 받자마자 인덱스의 snapshot이 생성
- snapshot이 생성되면서 쿼리 조건에 맞는 모든 document들을 찾기 위해 각각의 인덱스들에 search query가 전송됨
- 쿼리 조건에 맞는 document들을 찾으면 document를 업데이트하기 위해 bulk request가 전송됨
- bulk request의 결과 내 batches 필드를 통해 document를 회수하기 위해 사용된 배치 수를 파악할 수 있으며, 반환된 document의 개수가 만개를 넘어설 것을 대비해 search query는 scroll API를 사용
- search query와 bulk request는 짝을 이루며 순차적으로 인덱스에 전송이 됨
- 요청들을 동시에 전송하지 않는 이유는 업데이트 오류 처리 과정과 밀접한 연관이 있음
- es는 업데이트 오류 발생 시 디폴트로 10번을 재시도하며 10번을 재시도해도 실패할 경우 query 전체가 취소됨
- 쿼리 실패 시 result 내 "failures" 필드를 참고하면 어디서 실패했는지 확인 가능
- 쿼리가 실패한다고 해서 RDBMS transactional 기능처럼 기존 업데이트 건도 rollback이 되는 것이 아니라 기존 업데이트 건은 그대로 업데이트가 되고 실패한 document 이후 document들에 대해서는 업데이트 요청도 하지 않음
* A B C 요청이 있었을 때 A에서 성공, B에서 실패 시 C에 대해서는 요청도 안 보냄
* delete_by_query도 update_by_query와 동일한 프로세스로 진행
출처
Udemy (elasticsearch-complete-guide)
반응형
'Elastic Search' 카테고리의 다른 글
[Elasticsearch] Components 정리 (5) | 2022.10.12 |
---|---|
[Elasticsearch] Lucene 간단 정리 (0) | 2022.06.04 |
[Elasticsearch] document 읽고 쓰는 과정 정리 (0) | 2021.07.22 |
Elasticsearch 공부 정리 - 2 (0) | 2021.07.22 |
Elasticsearch 공부 정리 - 1 (0) | 2021.07.12 |