[230419] Elastic Stack 2일차 리뷰 내용

뜨개발자·2023년 4월 20일
0

TIL

목록 보기
61/75

오래 걸리는 query나 aggregation에 대해
1. 진행 상황을 모니터링 하거나
2. 부분적인 결과 상황을 확인할 때 사용

Changing data

Reindex

원본 index가 있고, 그 인덱스에서 파생된 사본을 만드는 것
전체 document를 대상으로 하지 않고 일부만을 활용하고 싶을 때에는
max_docsquery를 활용할 수 있음
한 클러스터에서 다른 클러스터로의 인덱스 복제도 가능

Update by Query

한 index 내에서 document를 수정하는 것
내용 수정 -> 저장 (x)
삭제 -> 재등록 (o)
=> document가 등록된 이후 indexing 절차가 달라졌을 수도 있기 때문에, 이런 내용을 반영하기 위해서 삭제했다가 다시 재등록하는 과정을 거침

Enrichment

RDB의 join과 유사한 개념
검색이 이루어질 때 join이 발생하면 데이터를 처리하는 과정이 추가되는 것이므로 속도가 느려질 수 있음
그래서 애초에 document가 indexing될 때, 필요한 내용을 다 끌어오는 것을 enrich라고 함

Denormalization

데이터를 저장할 때, 관계성에 중점을 두지 않고 하나의 index에 가능한 모든 정보를 담아두는 것
Elasticsearch의 외부에서 혹은 내부에서 모두 가능하지만, 내부에서 이루어지면 당연히 처리하는 과정이 추가되므로 속도에 영향을 줌
=> 외부에서 처리를 마치고 오는 것이 이상적

Runtime fields

index에는 존재하지 않지만 query를 실행하는 순간 생성되어 search, aggregation 등의 작업이 가능한 필드
실행되어 결과를 보여주고 난 이후에는 다시 사라짐 (저장되지 않음)

Painless script

요청을 수행할 때 작업할 추가적인 내용들을 작성하기 위한 Elasticsearch의 언어
작업 중에 수행되므로 작업의 속도를 늦출 수 있음
임시 방편으로, 가능하면 사용하지 않고 reindexing하거나 update하는 것이 좋음

Significant aggregation

필드의 타입에 따라 두 가지 옵션이 존재

  • significant_terms : keyword 필드에 사용
  • significant_text : text 필드에 사용

대량의 문서 내에서 작업하기 힘들 수 있으므로 표본을 만들 수 있는 sampler aggregation을 진행한 후, 그 내부에서 사용하기가 권장됨

Transforming data

대량의 데이터에서 매번 정보를 요약해오는 것은 부담이 될 수 있는 작업
=> 요약본을 미리 마련해두어 별도의 index에 유지하는 것이 transform

pivot

transform의 종류 중 하나
원본 테이블에 대해 필요한 정보를 어떻게 요약할지 정의하여 유지

Continuous mode

원본 index에 document가 들어올 때, pivot에도 해당 document에 대한 정보가 들어옴
원본 index를 체크하는 시간 주기를 설정 가능 (최대 1시간)

Retention policy

오래된 document에 대한 내용을 어떻게 처리할지 설정 가능

Latest

최신 내용만 가지고 있으면 되는 경우에 선택할 수 있는 transform 종류
새로은 document가 들어오면 기존 내용 대신 해당 내용을 보관하게 됨

profile
뜨개질하는 개발자

0개의 댓글