엘라스틱서치 실무 가이드 (한글 검색 시스템 구축부터 대용량 클러스터 운영까지)

엘라스틱서치 실무 가이드 (한글 검색 시스템 구축부터 대용량 클러스터 운영까지)

$40.97
Description
이 책은 오픈소스 검색엔진의 대표 주자인 엘라스틱서치에 대한 전반적인 내용을 다룬다. 하지만 단순히 엘라스틱서치의 기능을 단편적으로만 설명하고 끝내는 것이 아니라 한국 검색 시장에 맞게 한글 형태소 분석기를 이용하는 방법이나 한글 자동완성 구현 원리, 대용량 클러스터 운영을 위한 노하우까지도 아낌없이 설명하려고 노력했다.

이 책을 통해 저자들이 수년간 검색 시스템을 구축하고 운영하면서 얻은 노하우와 한글 처리 기법들을 얻어가길 바란다.
저자

권택환

권택환은네이버쇼핑플랫폼에서백앤드와서버개발을맡고있다.자바카페커뮤니티운영진이기도하다.배우는것을좋아해하루하루성장함을느낄때가가장행복한천상개발자다.

목차

▣01장검색시스템이해하기
1.1검색시스템의이해
__1.1.1검색시스템이란?
__1.1.2검색시스템의구성요소
__1.1.3관계형데이터베이스와의차이점
1.2검색시스템과엘라스틱서치
__1.2.1엘라스틱서치가강력한이유
__1.2.2엘라스틱서치의약점
1.3실습환경구축
__1.3.1엘라스틱서치설치
__1.3.2키바나설치
__1.3.3환경구축관련트러블슈팅

▣02장엘라스틱서치살펴보기
2.1엘라스틱서치를구성하는개념
__2.1.1기본용어
__2.1.2노드의종류
__2.1.3클러스터,노드,샤드
2.2엘라스틱서치에서제공하는주요API
__2.2.1인덱스관리API
__2.2.2문서관리API
__2.2.3검색API
__2.2.4집계API

▣03장데이터모델링
3.1매핑API이해하기
__3.1.1매핑인덱스만들기
__3.1.2매핑확인
__3.1.3매핑매개변수
3.2메타필드
__3.2.1_index메타필드
__3.2.2_type메타필드
__3.2.3_id메타필드
__3.2.4_uid메타필드
__3.2.5_source메타필드
__3.2.6_all메타필드
__3.2.7_routing메타필드
3.3필드데이터타입
__3.3.1Keyword데이터타입
__3.3.2Text데이터타입
__3.3.3Array데이터타입
__3.3.4Numeric데이터타입
__3.3.5Date데이터타입
__3.3.6Range데이터타입
__3.3.7Boolean데이터타입
__3.3.8Geo-Point데이터타입
__3.3.9IP데이터타입
__3.3.10Object데이터타입
__3.3.11Nested데이터타입
3.4엘라스틱서치분석기
__3.4.1텍스트분석개요
__3.4.2역색인구조
__3.4.3분석기의구조
__3.4.4전처리필터
__3.4.5토크나이저필터
__3.4.6토큰필터
__3.4.7동의어사전
3.5DocumentAPI이해하기
__3.5.1문서매개변수
__3.5.2IndexAPI
__3.5.3GetAPI
__3.5.4DeleteAPI
__3.5.5DeleteByQueryAPI
__3.5.6UpdateAPI
__3.5.7BulkAPI
__3.5.8ReindexAPI

▣04장데이터검색
4.1검색API
__4.1.1검색질의표현방식
__4.1.2URI검색
__4.1.3RequestBody검색
4.2QueryDSL이해하기
__4.2.1QueryDSL쿼리의구조
__4.2.2QueryDSL쿼리와필터
__4.2.3QueryDSL의주요파라미터
4.3QueryDSL의주요쿼리
__4.3.1MatchAllQuery
__4.3.2MatchQuery
__4.3.3MultiMatchQuery
__4.3.4TermQuery
__4.3.5BoolQuery
__4.3.6QueryString
__4.3.7PrefixQuery
__4.3.8ExistsQuery
__4.3.9WildcardQuery
__4.3.10NestedQuery
4.4부가적인검색API
__4.4.1효율적인검색을위한환경설정
__4.4.2SearchShardsAPI
__4.4.3MultiSearchAPI
__4.4.4CountAPI
__4.4.5ValidateAPI
__4.4.6ExplainAPI
__4.4.7ProfileAPI

▣05장데이터집계
5.1집계
__5.1.1엘라스틱서치와데이터분석
__5.1.2엘라스틱서치가집계에사용하는기술
__5.1.3실습데이터살펴보기
__5.1.4AggregationAPI이해하기
5.2메트릭집계
__5.2.1합산집계
__5.2.2평균집계
__5.2.3최솟값집계
__5.2.4최댓값집계
__5.2.5개수집계
__5.2.6통계집계
__5.2.7확장통계집계
__5.2.8카디널리티집계
__5.2.9백분위수집계
__5.2.10지형경계집계
__5.2.11지형중심집계
5.3버킷집계
__5.3.1범위집계
__5.3.2날짜범위집계
__5.3.3히스토그램집계
__5.3.4날짜히스토그램집계
__5.3.5텀즈집계
5.4파이프라인집계
__5.4.1형제집계
__5.4.2부모집계
5.5근삿값(Approximate)으로제공되는집계연산
__5.5.1집계연산과정확도
__5.5.2분산환경에서집계연산의어려움

▣06장고급검색
6.1한글형태소분석기사용하기
__6.1.1은전한닢형태소분석기
__6.1.2Nori형태소분석기
____6.1.2.1nori_tokenizer토크나이저
__6.1.3트위터형태소분석기
6.2검색결과하이라이트하기
6.3스크립트를이용해동적으로필드추가하기
6.4검색템플릿을이용한동적쿼리제공
6.5별칭을이용해항상최신인덱스유지하기
6.6스냅숏을이용한백업과복구

▣07장한글검색확장기능
7.1SuggestAPI소개
__7.1.1TermSuggestAPI
__7.1.2CompletionSuggestAPI
7.2맞춤법검사기
__7.2.1TermSuggesterAPI를이용한오타교정
__7.2.2한영/영한오타교정
7.3한글키워드자동완성
__7.3.1CompletionSuggestAPI를이용한한글자동완성
__7.3.2SuggestAPI를이용한한글자동완성의문제점
__7.3.3직접구현해보는한글자동완성
7.4자바카페플러그인
__7.4.1한글유니코드의이해
__7.4.2한글자모분석필터(javacafe_jamo)
__7.4.3한글초성분석필터(javacafe_chosung)
__7.4.4영한오타변환필터(javacafe_eng2kor)
__7.4.5한영오타변환필터(javacafe_kor2eng)
__7.4.6스펠링체크필터(javacafe_spell)

▣08장엘라스틱서치클라이언트
8.1엘라스틱서치클라이언트이해하기
__8.1.1클라이언트모듈소개
__8.1.2자바클라이언트모듈
8.2Transport클라이언트
__8.2.1Transport클라이언트연결
__8.2.2매핑API사용하기
__8.2.3문서API사용하기
__8.2.4검색API사용하기
__8.2.5집계API사용하기
__8.2.6QueryDSLAPI사용하기
8.3HighLevelREST클라이언트
__8.3.1REST클라이언트연결
__8.3.2매핑API사용하기
__8.3.3문서API사용하기
__8.3.4검색API사용하기

▣09장엘라스틱서치와루씬이야기
9.1클러스터관점에서구성요소살펴보기
__9.1.1클러스터
__9.1.2노드
__9.1.3인덱스
__9.1.4문서
__9.1.5샤드
__9.1.6레플리카
__9.1.7세그먼트
9.2엘라스틱서치샤드vs.루씬인덱스
9.3엘라스틱서치가근실시간검색을제공하는이유
__9.3.1색인작업시세그먼트의기본동작방식
__9.3.2세그먼트불변성
__9.3.3세그먼트불변성과업데이트
__9.3.4루씬을위한Flush,Commit,Merge
__9.3.5엘라스틱서치를위한Refresh,Flush,OptimizeAPI
__9.3.6엘라스틱서치와NRT(NearReal-Time)
9.4고가용성을위한Translog의비밀
__9.4.1Translog의동작순서
__9.4.2Translog가존재하는이유
9.5.엘라스틱서치샤드최적화
__9.5.1운영중에샤드의개수를수정하지못하는이유
__9.5.2레플리카샤드의복제본수는얼마가적당할까?
__9.5.3클러스터에서운영가능한최대샤드수는?
__9.5.4하나의인덱스에생성가능한최대문서수는?

▣10장대용량처리를위한시스템최적화
10.1노드실행환경과JVM옵션
__10.1.1엘라스틱서치릴리스노트
__10.1.2실행시자바8이상을사용해야하는이유
__10.1.3항상최신버전의엘라스틱서치를사용해야하는이유
__10.1.4자바8에서제공하는JVM옵션
__10.1.5엘라스틱서치에적용된JVM옵션
10.2힙크기를32GB이하로유지해야하는이유
__10.2.1엘라스틱서치와힙크기
__10.2.2OrdinaryObjectPointer
__10.2.3CompressedOrdinaryObjectPointer
__10.2.4엘라스틱서치에서힙크기설정하기
__10.2.5엘라스틱서치에서CompressedOOP사용하기
10.3엘라스틱서치와가상메모리
__10.3.1가상메모리
__10.3.2JVM을위한가상메모리
__10.3.3엘라스틱서치를위한vm.max_map_count설정
10.4분산환경에서의메모리스와핑
__10.4.1메모리스와핑
__10.4.2엘라스틱서치에서스와핑을비활성화해야하는이유
10.5.시스템튜닝포인트
__10.5.1애플리케이션에서튜닝가능한리소스
__10.5.2ulimit명령어를이용한유저레벨의튜닝
__10.5.3sysctl명령어를이용한커널레벨의튜닝
__10.5.4엘라스틱서치노드레벨의튜닝

▣11장장애방지를위한실시간모니터링
11.1클러스터Health체크
__11.1.1클러스터레벨의Health체

출판사 서평

★이책에서다루는내용★

◎검색시스템구축
-엘라스틱서치의특징과주요사용법
-한글형태소분석기활용법
-한글자모(Jamo,자음과모음)분석원리
-한글키워드자동완성(초성검색,자모검색,오타교정)
-자바클라이언트활용법

◎대용량클러스터운영
-인덱스와샤드최적화를위한설계기법
-시스템튜닝포인트
-대용량클러스터운영노하우
-장애방지를위한실시간모니터링
-노드부트스트랩과정의이해
-랠리를이용한클러스터의성능측정