엘라스틱서치 바이블 (엘라스틱서치 동작 원리와 구조부터 클러스터 운영, 플러그인 개발까지)

엘라스틱서치 바이블 (엘라스틱서치 동작 원리와 구조부터 클러스터 운영, 플러그인 개발까지)

$35.39
Description
이 책은 단순한 엘라스틱서치 기능 소개와 사용법에 대한 학습을 넘어 엘라스틱서치의 구조를 깊이 파헤친다. 엘라스틱서치를 뜯어보며 동작 원리와 구조에 대한 근본적인 이해도를 높이고 싶은 분들의 갈증을 해소시키는 것을 목표로 했다.
엘라스틱서치 입문자부터 경험이 있는 실무자까지 다양한 분들에게 도움이 될 수 있도록 다양한 내용을 넓고 깊게 담았다. 엘라스틱서치 1 버전 시절부터 시작해 최신 버전까지 전부 겪으며 오랜 기간 수많은 엘라스틱서치 클러스터를 운영하고 서비스를 개발하며 얻은 실무 경험을 녹였다.

엘라스틱서치를 처음 접하는 분들도 이 책을 읽고 나면 엘라스틱서치의 특성에 맞는 적절한 데이터 설계와 서비스 설계 위에 엘라스틱서치를 도입해 실무 운영 및 장애 대응까지 프로덕션 수준에서 가능하도록 내용을 구성했다. 엘라스틱서치 운영 경험이 있는 분들이라면 커스텀 플러그인을 개발하거나 엘라스틱서치 소스코드를 직접 수정해 엘라스틱서치를 원하는 방향으로 커스터마이징도 할 수 있도록 깊은 내용까지 다룬다.

★ 이 책에서 다루는 내용 ★

◎ 엘라스틱서치의 주요 특성과 동작 이해
◎ 인덱스와 샤드 설계
◎ 클러스터 운영 전략과 노하우
◎ 장애 징후 탐지를 위한 모니터링
◎ 운영 도중 자주 발생하는 장애 유형과 대응 방법
◎ 원활한 장애 복구를 위한 서비스 구조 설계와 샤드 복구 전략
◎ 통신 채널 암호화와 인증, 권한 분리 적용
◎ 엘라스틱서치의 분산 처리 과정과 동시성 제어
◎ 엘라스틱서치와 루씬의 검색 동작 흐름과 매칭, 스코어링 과정 상세
◎ 캐시 동작 상세
◎ 체크포인트와 샤드 복구 과정
◎ 커스텀 플러그인 개발과 엘라스틱서치 커스터마이징
◎ 엘라스틱서치 소스 코드 분석
◎ 위험한 액션 차단 및 변조
◎ 엘라스틱서치 데이터 변경분을 카프카로 발급
저자

여동현

고려대학교컴퓨터학과졸업.현재포털회사에서광고플랫폼과데이터파이프라인,광고검색엔진을개발하고있으며동료사내개발자를대상으로엘라스틱서치강의도하고있다.최근에는대규모엘라스틱서치클러스터의커스터마이징과성능튜닝작업에많은시간을쏟고있다.

목차

▣01장:엘라스틱서치소개

1.1엘라스틱서치의기본콘셉트

1.2라이선스정책

1.3실습환경구축

__1.3.1엘라스틱서치설치

__1.3.2키바나설치

__1.3.3샘플데이터적재

__1.3.4Cerebro설치

▣02장:엘라스틱서치기본동작과구조

2.1엘라스틱서치기본동작빠르게둘러보기

__2.1.1문서색인

__2.1.2문서조회

__2.1.3문서업데이트

__2.1.4문서검색

__2.1.5문서삭제

2.2엘라스틱서치구조개괄

2.3엘라스틱서치내부구조와루씬

__2.3.1루씬flush

__2.3.2루씬commit

__2.3.3세그먼트

__2.3.4루씬인덱스와엘라스틱서치인덱스

__2.3.5translog

▣03장:인덱스설계

3.1인덱스설정

__3.1.1number_of_shards

__3.1.2number_of_replicas

__3.1.3refresh_interval

__3.1.4인덱스설정을지정하여인덱스생성

3.2매핑과필드타입

__3.2.1동적매핑vs.명시적매핑

__3.2.2필드타입

__3.2.3doc_values

__3.2.4fielddata

__3.2.5_source

__3.2.6index

__3.2.7enabled

3.3애널라이저와토크나이저

__3.3.1analyzeAPI

__3.3.2캐릭터필터

__3.3.3토크나이저

__3.3.4토큰필터

__3.3.5내장애널라이저

__3.3.6애널라이저를매핑에적용

__3.3.7커스텀애널라이저

__3.3.8플러그인설치를통한애널라이저추가와한국어형태소분석

__3.3.9노멀라이저

3.4템플릿

__3.4.1인덱스템플릿

__3.4.2컴포넌트템플릿

__3.4.3레거시템플릿

__3.4.4동적템플릿

__3.4.5빌트인인덱스템플릿

3.5라우팅

__3.5.1인덱스내에서의_id고유성보장

__3.5.2인덱스매핑에서라우팅을필수로지정하기

▣04장:데이터다루기

4.1단건문서API

__4.1.1색인API

__4.1.2조회API

__4.1.3업데이트API

__4.1.4삭제API

4.2복수문서API

__4.2.1bulkAPI

__4.2.2multigetAPI

__4.2.3updatebyquery

__4.2.4deletebyquery

4.3검색API

__4.3.1검색대상지정

__4.3.2쿼리DSL검색과쿼리문자열검색

__4.3.3match_all쿼리

__4.3.4match쿼리

__4.3.5term쿼리

__4.3.6terms쿼리

__4.3.7range쿼리

__4.3.8prefix쿼리

__4.3.9exists쿼리

__4.3.10bool쿼리

__4.3.11constant_score쿼리

__4.3.12그외주요매개변수

__4.3.13검색결과정렬

__4.3.14페이지네이션

4.4집계

__4.4.1집계기본

__4.4.2메트릭집계

__4.4.3버킷집계

__4.4.4파이프라인집계

4.5서비스코드에서엘라스틱서치클라이언트이용

__4.5.1저수준REST클라이언트

__4.5.2고수준REST클라이언트

__4.5.3자바클라이언트

▣05장:서비스환경에클러스터구성

5.1운영환경을위한설정과클러스터구성

__5.1.1노드설정과노드역할

__5.1.2그외필요한주요설정

5.2클러스터구성전략

__5.2.1마스터후보노드와데이터노드를분리

__5.2.2마스터후보노드와투표구성원

__5.2.3서버자원이많지않은경우

__5.2.4서버자원이굉장히많이필요한경우

__5.2.5사양이크게차이나는서버자원을활용해야하는경우

__5.2.6조정전용노드

__5.2.7한서버에여러프로세스띄우기

5.3보안기능적용

__5.3.1모든보안기능을적용하지않은상태

__5.3.2TLS부트스트랩체크

__5.3.3클러스터최초기동시자동보안설정이용

__5.3.4키바나와브라우저사이에TLS적용

__5.3.5수동으로엘라스틱서치노드간의통신에TLS적용

__5.3.6수동으로기본인증설정

__5.3.7수동으로RESTAPI호출에TLS적용

▣06장:클러스터운영

6.1클러스터설정API

6.2catAPI를통한클러스터관리와모니터링

6.3인덱스운영전략

__6.3.1템플릿과명시적매핑활용

__6.3.2라우팅활용

__6.3.3시계열인덱스이름

__6.3.4alias

__6.3.5롤오버

__6.3.6데이터스트림

__6.3.7reindex

__6.3.8shrink로샤드개수줄이기

__6.3.9split으로샤드개수늘이기

__6.3.10다중필드

__6.3.11타입이계속변경되는데이터

__6.3.12루씬텀길이제약

__6.3.13대량색인이필요할때

6.4샤드운영전략

__6.4.1샤드의크기와개수조정

__6.4.2모든노드가충분히일을하고있는지

__6.4.3미래에데이터가커질것을고려

__6.4.4테스트수행

6.5롤링리스타트

6.6스냅샷과복구

__6.6.1스냅샷저장소등록과설정

__6.6.2스냅샷을생성하고조회하기

__6.6.3스냅샷에서인덱스복구하기

__6.6.4스냅샷삭제하기

__6.6.5스냅샷생명주기관리

6.7명시적으로세그먼트병합하기

6.8샤드할당필터링과데이터티어구조

__6.8.1노드속성과샤드할당의식

__6.8.2클러스터단위샤드할당필터링

__6.8.3인덱스단위샤드할당필터링

__6.8.4데이터티어구조

6.9인덱스생명주기관리

6.10서킷브레이커

6.11슬로우로그설정

6.12버전업그레이드

__6.12.1사전에챙겨야할사항

__6.12.2롤링업그레이드

__6.12.3풀리스타트업그레이드

__6.12.4엘라스틱스택업그레이드

▣07장:운영도중발생하는장애대응

7.1장애징후탐지를위한사전모니터링등록

__7.1.1메트릭비트로지표데이터를수집하고스택모니터링으로확인하기

__7.1.2키바나의얼럿기능으로알람받기

__7.1.3다른대안으로구성하기

7.2장애발생시대응

7.3자주발생하는장애유형

__7.3.1키바나에서과도한요청인입

__7.3.2GC로인한stop-the-world상황

__7.3.3디스크풀상황

__7.3.4미할당샤드가남았는데샤드할당이더이상진행되지않는상황

__7.3.5댕글링인덱스

__7.3.6장애복구작업도중새인덱스가생성될때

__7.3.7날짜가넘어가는순간에대량으로새인덱스가생성되며부하가몰려죽는

상황

__7.3.8특정노드의성능이떨어지는상황

7.4샤드복구전략

__7.4.1샤드복구기본

__7.4.2샤드복구진행상황확인

__7.4.3샤드복구속도조정

__7.4.4샤드복구우선순위조정

7.5원활한장애복구를위한서비스구조설계

__7.5.1앞쪽에메시지큐를둔다

__7.5.2멱등하게설계한다

__7.5.3용도나중요도별로클러스터를분리해야한다

▣08장:엘라스틱서치의내부동작상세

8.1엘라스틱서치의데이터분산처리과정

__8.1.1쓰기작업시엘라스틱서치동작과동시성제어

__8.1.2읽기작업시엘라스틱서치동작

__8.1.2체크포인트와샤드복구과정

8.2엘라스틱서치의검색동작상세

__8.2.1엘라스틱서치검색동작흐름

__8.2.2루씬쿼리의매칭과스코어링과정

__8.2.3캐시동작

▣09장:커스텀플러그인을이용한엘라스틱서치커스터마이징과실전운영

9.1커스텀플러그인이필요한이유

9.2플러그인기본

__9.2.1플러그인기본관리

__9.2.2플러그인기본구조

__9.2.3플러그인개발시유의할사항

9.3HelloWorld플러그인제작

__9.3.1플러그인프로젝트생성과기본구조잡기

__9.3.2Plugin과ActionPlugin

9.4엘라스틱서치와플러그인의테스트코드작성

__9.4.1테스트코드작성을위한기본설정

__9.4.2엘라스틱서치테스트프레임워크로테스트코드작성

__9.4.3REST레이어테스트

9.5ActionFilter로위험한액션차단및변조하기

__9.5.1ActionFilter를사용하는플러그인구현

__9.5.2엘라스틱서치기동과정과ActionFilter의동작상세