일래스틱서치 고급 기능의 개념과 활용 [일래스틱서치 5를 활용한 유연하고 확장 가능한 검색 솔루션 개발]
- 원서명Mastering Elasticsearch 5.x - Third Edition: Master the intricacies of Elasticsearch 5 and use it to create flexible and scalable search solutions (ISBN 9781786460189)
- 지은이바디 딕시트(Bharvi Dixit)
- 옮긴이김용환
- ISBN : 9791161750552
- 35,000원
- 2017년 09월 27일 펴냄 (절판)
- 페이퍼백 | 520쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
최신 일래스틱서치 5를 소개한 책으로 기존 일래스틱서치 하위 버전에서 제공하던 기능도 함께 소개하고 있다.
새롭게 개선된 아파치 루씬 6의 기본 텍스트 스코어링 메커니즘에 대한 설명과 설정 방법 뿐 아니라 모델링 방법, 5가지 타입의 노드, 관리 기능, 검색, 자동 완성화, 성능 튜닝, 샤드 및 복제본 개수와 라우팅을 이용한 운영 방법을 설명한다.
마지막으로 플러그인 개발 방법과 일래스틱 스택 5.0을 소개해 일래스틱서치와 함께 사용할 수 있는 일래스틱 오픈소스를 소개한다.
이 책의 대상 독자
위대한 검색 서버인 일래스틱서치의 기본 개념을 숙지한 상태에서, 일래스틱서치 지식을 좀 더 확장하고자 하는 일래스틱서치 사용자와 열렬한 지지자를 위해 작성됐다. 또한 아파치 루씬 또는 일래스틱서치의 작동 방식과 일래스틱서치 1.x에서 5.x까지의 변경사항 등을 설명하고 있다. 그 외에도 쿼리 관련성을 높이는 방법을 살펴보고, 일래스틱서치의 플러그인으로 일래스틱서치의 확장 방법을 학습하길 원하는 독자는 이 책을 흥미롭고 유용하게 읽을 수 있을 것이다.
대부분의 장에서 독자에게 관련 지식이 있다고 가정하고 진행하기 때문에 일래스틱서치를 처음 접하거나 쿼리와 데이터 인덱스 생성 등 기본 개념에 익숙하지 않다면 다소 어려울 수 있다.
이 책의 구성
1장, ‘일래스틱서치와 일래스틱서치 변경 다시 살펴보기’에서는 아파치 루씬의 동작 방식을 알아본다. 일래스틱서치 5.x를 소개하고, 기본 개념 설명 후에 일래스틱서치의 중요한 변경사항을 1.x부터 5.x까지 소개한다.
2장, ‘고급 쿼리 DSL’에서는 새로운 기본 스코어링 알고리즘인 BM25를 설명하고, 이전 TFIDF 알고리즘보다 더 나은지 살펴본다. 이 외에도 쿼리 재작성, 쿼리 템플릿, 쿼리 모듈 변경, 특정 시나리오에서 선택할 수 있는 다양한 쿼리와 같은 일래스틱서치 기능에 대해 설명한다.
3장, ‘전체 텍스트 검색을 넘어서’에서는 리스코어링(rescoring) , 멀티매칭 제어, 함수 스코어 쿼리를 설명한다. 이어서 일래스틱서치의 스크립팅 모듈도 다룬다.
4장, ‘데이터 모델링과 분석’에서는 일래스틱서치의 다양한 데이터 모델링 방법을 설명한다. 부모-자식 데이터 타입과 중첩 데이터 타입을 사용해 도큐먼트 간의 관계를 다루는 방법과 실질적인 고려사항을 살펴본다. 또한 데이터 분석을 위한 일래스틱서치의 집계 모듈을 설명한다.
5장, ‘사용자 검색 환경 개선’에서는 제안자(suggester)를 사용해 사용자 검색 환경을 향상시키는 주제에 초점을 둔다. 제안자를 사용하면 사용자 쿼리 철자 실수를 수정하고 효율적인 자동 완성 메커니즘을 생성할 수 있다. 이 외에 쿼리 관련성을 높이는 방법과 동의어를 사용해 검색하는 방법도 다룬다.
6장, ‘인덱스 배포 아키텍처’에서는 적절한 샤드와 복제본 개수 선택, 라우팅 동작 방식, 샤드할당 동작 방식, 샤드 할당 동작 변경 방법을 다룬다. 이 외에도 쿼리 실행 preference 설정이 무엇이며, 쿼리를 실행할 위치를 어떻게 선택하는지 설명한다.
7장, ‘로우 레벨 인덱스 제어’에서는 아파치 루씬의 스코어링을 변경하는 방법과 대안 스코어링 알고리즘을 선택하는 방법을 설명한다. 또한 NRT 검색과 저장, 트랜잭션 로그 사용을 다룬다. 일래스틱서치 5.x에서 제거된 병합 정책에 대한 세부 정보와 함께 세그먼트 병합, 사용 사례에 맞게 조정할 수 있는 내용을 소개한다. 마지막 부분에서는 IO 스로틀링과 일래스틱서치 캐싱에 대한 정보도 제공한다.
8장, ‘일래스틱서치 관리’에서는 일래스틱서치 관리와 관련된 개념에 초점을 맞춘다. 탐색, 게이트웨이, 복구 모듈의 정의 및 설정 방법과 왜 이 부분을 신경 써야 하는지 설명한다. 또한 cat API가 무엇인지 알아보고, 다른 클라우드 서비스(아마존 AWS, 마이크로소프트 애저(Microsoft Azure))에 데이터를 백업하고 복원하는 방법에 대해 다룬다.
9장, ‘데이터 변환과 통합 검색’에서는 일래스틱서치에 저장하기 전에 일래스틱서치 클러스터 자체에 데이터를 전처리할 수 있는, 일래스틱서치 5의 최신 기능인 인제스트 노드를 소개한다. 또한 트라이브 노드를 사용해 여러 클러스터에서 통합 검색이 동작하는 방식을 설명한다.
10장, ‘성능 개선’에서는 여러 부하에서의 일래스틱서치 성능 향상을 설명한다. 상용 클러스터를 적절히 스케일링하는 방법, 가비지 컬렉션 및 핫 스레드 이슈에 대한 통찰력과 문제 처리 방법을 다룬다. 또한 쿼리 프로파일링과 쿼리 벤치마킹을 다룬다. 이어서 쿼리 처리량이 많은 시나리오와 저장 처리량이 많은 시나리오에서 일반적인 일래스틱서치 클러스터의 튜닝 조언을 설명한다.
11장, ‘일래스틱서치 플러그인 개발’에서는 일래스틱서치의 플러그인 개발 방법을 다룬다. 이어서 사용자 정의 REST 액션과 언어 분석 플러그인을 작성하는 방법을 자세히 설명한다.
12장, ‘일래스틱 스택 5.0 소개’에서는 일래스틱 스택 5.0의 구성요소인 일래스틱서치, 로그스태시, 키바나, 비트를 소개한다
목차
목차
- 1장. 일래스틱서치와 일래스틱서치 변경 다시 살펴보기
- 루씬 소개
- 루씬 인덱스 자세히 살펴보기
- 일래스틱서치 소개
- 일래스틱서치 5.x 소개
- 일래스틱서치의 새 기능 소개
- 일래스틱서치의 변경사항
- 2.x부터 5.x까지의 변경사항
- 요약
- 루씬 소개
- 2장. 고급 쿼리 DSL
- 루씬에서 변경된 기본 텍스트 스코어링: BM25
- 정밀도와 회수
- TF-IDF 정리
- BM25가 TF-IDF와 다른 점
- 리팩토링된 쿼리 DSL
- 작업에 적합한 쿼리 선택하기
- 쿼리 범주화
- 사용 사례
- 쿼리 DSL의 중요한 변경사항
- 쿼리 재작성 explain
- prefix 쿼리 예제
- 아파치 루씬 다시 살펴보기
- 쿼리 재작성 속성
- 쿼리 템플릿
- 검색 템플릿 소개
- Mustache 템플릿 엔진
- 요약
- 루씬에서 변경된 기본 텍스트 스코어링: BM25
- 3장. 전체 텍스트 검색을 넘어서
- 멀티매칭 제어
- 멀티매칭 타입
- 베스트 필드 매칭
- 크로스 필드 매칭
- 모스트 필드 매칭
- 구문 매칭
- 접두어 매칭을 이용한 구문
- 함수 스코어 쿼리를 이용한 스코어 제어
- 함수 스코어 쿼리의 내장 함수
- weight 함수
- 필드 값 인자 함수
- 스크립트 스코어 함수
- 감쇄 함수: 선형, 지수, 가우스 함수
- 쿼리 리스코어링
- 쿼리 리스코어링이란 무엇인가?
- 리스코어 쿼리의 구조
- 리스코어 매개변수
- 일래스틱서치 스크립팅
- 문법
- 여러 버전의 스크립팅 변경사항
- 페인리스: 새로운 기본 스크립팅 언어
- 스크립팅 언어 페인리스의 사용
- 예제
- 스크립트를 기반으로 결과 정렬
- 여러 필드를 기반으로 정렬
- 루씬 표현식
- 기초
- 예제
- 요약
- 4장. 데이터 모델링과 분석
- 일래스틱서치의 데이터 모델링 기술
- 일래스틱서치의 관계형 데이터 관리
- 객체 타입
- 중첩 도큐먼트
- 부모-자식 관계
- 대안에 대한 몇 마디
- 데이터 반정규화의 예제
- 집계를 이용한 데이터 분석
- 일래스틱서치 5.0의 인스턴트 집계
- 집계 재방문
- 새로운 집계 범주: 매트릭스 집계
- 요약
- 5장. 사용자 검색 환경 개선
- 사용자 맞춤법 실수 수정
- 데이터 테스트
- 세부 기술 정보 얻기
- 제안자
- _search 엔드포인트에서 제안자 사용
- term 제안자
- phrase 제안자
- completion 제안자
- 사용자 맞춤법 실수 수정
- 사용자 정의 자동 완성 구현
- 인덱스 생성
- 동의어 작업
- 동의어 검색 설정 준비
- 동의어 포맷 지정
- 동의어 확장과 동의어 수축
- 요약
- 다중 노드 클러스터 예제 설정
- 샤드와 복제본의 적절한 개수 선택
- 샤딩과 초과 할당
- 초과 할당의 긍정적인 예제
- 다중 샤드와 다중 인덱스
- 라우팅 설명
- 샤드와 데이터
- 라우팅 테스트
- 라우팅을 이용한 저장
- 실제 라우팅
- 쿼리
- 앨리어스
- 다중 라우팅 값
- 샤드 할당 제어
- 할당 인식
- 노드당 할당할 수 있는 전체 샤드 개수 정의
- 물리 서버에 허용될 전체 샤드 정의
- 쿼리 실행 preference
- 여러 경로의 데이터를 스트라이핑하기
- 인덱스와 타입: 인덱스 생성 시 변경된 접근 방식
- 요약
- 아파치 루씬 스코어링 변경
- 사용 가능한 유사도 모델
- 필드마다 유사도 설정하기
- 유사도 모델 설정
- 기본 유사도 모델 선택
- 적절한 디렉토리 구현 선택: 저장소 모듈
- 저장소 타입
- 간단한 파일 시스템 저장소: simplefs
- NRT, 플러시, 리프레시, 트랜잭션 로그
- 인덱스 변경과 변경사항 커밋
- 기본 리프레시 시간 변경
- 트랜잭션 로그
- 거의 실시간 GET
- 세그먼트 병합의 제어
- 일래스틱서치의 병합 정책 변경
- 계층 병합 정책 설정
- 스케줄링 병합
- 강제 병합
- 일래스틱서치 캐시의 이해
- 노드 쿼리 캐시
- 샤드 요청 캐시
- 필드 데이터 캐시
- 서킷 브레이커 사용
- 요약
- 일래스틱서치의 노드 타입
- 데이터 노드
- 마스터 노드
- 인제스트 노드
- 트라이브 노드
- 코디네이팅 노드/클라이언트 노드
- 탐색과 복구 모듈
- 탐색 설정
- 게이트웨이와 복구 설정
- 인덱스 복구 API
- 인간 친화적인 상태 API: cat API
- cat API의 기초
- cat API의 사용
- 백업
- 스냅샷 API
- 파일 시스템 백업하기
- 클라우드에 백업 저장
- 스냅샷 복구
- 예제: 스냅샷 복구
- 요약
- 인제스트 노드가 포함된 일래스틱서치에서의 데이터 전처리 수행 방법
- 유입 파이프라인 작업
- 파이프라인의 에러 처리
- 인제스트 프로세서로 작업
- 통합 검색
- 테스트 클러스터
- 트라이브 노드 생성
- 트라이브 노드로 데이터 읽기
- 마스터 레벨의 읽기 오퍼레이션
- 트라이브 노드에서 데이터 저장
- 마스터 레벨의 저장 오퍼레이션
- 인덱스 충돌 처리
- 블로킹 쓰기 오퍼레이션
- 요약
- 쿼리 유효성 검사와 프로파일링
- 실행 전에 비싼 쿼리의 유효성 검사하기
- 자세한 쿼리 실행 보고서를 위한 쿼리 프로파일링
- 프로파일링 사용 시 고려사항
- 핫 스레드
- 핫 스레드 API의 사용법 설명
- 핫 스레드 API의 응답
- 일래스틱서치의 스케일링
- 수직 스케일링
- 수평 스케일링
- 고부하 시나리오에서의 일래스틱서치 사용
- 축소와 롤오버 API를 사용해 시간 기반 인덱스를 효율적으로 관리하는 방법
- 축소 API
- 롤오버 API
- 요약
- 아파치 메이븐 프로젝트의 구조 생성
- 메이븐 기초의 이해
- 메이븐 자바 프로젝트의 구조
- 사용자 정의 REST 엔드포인트 생성
- 가정
- 구현 세부사항
- 테스트 시간
- 사용자 정의 분석 플러그인 생성
- 구현 세부사항
- 사용자 정의 분석 플러그인의 테스트
- 요약
- 일래스틱 스택 5.0 소개
- 로그스태시, 비트, 키바나 소개
- 로그스태시로 작업
- 데이터 전송자, 비트 소개
- 키바나로 작업