Elasticsearch in Action [일래스틱서치의 핵심 기능과 고급 기능]
- 원서명Elasticsearch in Action (ISBN 9781617291623)
- 지은이라두 게오르게(Radu Gheorghe), 매튜 리 힌만(Matthew Lee Hinman), 로이 루소(Roy Russo)
- 옮긴이이재익, 최중연, 이승진, 한우람
- ISBN : 9788960779105
- 45,000원
- 2016년 10월 31일 펴냄
- 페이퍼백 | 688쪽 | 188*235mm
- 시리즈 : 오픈소스 프로그래밍
책 소개
저자 GitHub(https://github.com/dakrone/elasticsearch-in-action)에서 5.x branch를 내려받으실 수 있습니다.
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
요약
일래스틱서치는 루씬 기반의 실시간 검색을 제공하는 분산 검색엔진이다. 검색 기능뿐만 아니라 강력한 집계 기능을 제공해 실시간 분석엔진으로도 활용 가능하며, 데이터를 저장할 수 있어 NoSQL 저장소로도 활용할 수 있다. 넷플릭스(Netflix), 깃허브(Github), 위키피디아(Wikipedia) 등 잘 알려진 사이트에서도 검색, 로그, 분석 등 다양한 용도로 클러스터를 운영하고 있다.
이 책은 색인, 검색 쿼리, 제안 쿼리, 운영 등 일래스틱서치의 기능을 설치부터 운영까지 예제와 함께 설명하고 있어, 일래스틱서치를 처음 시작하는 개발자, 이미 사용하고 있지만 고급 기능들의 활용법에 대해 궁금한 개발자, 설치와 설정 및 운영 노하우가 필요한 인프라 운영자까지 독자들에게 유용한 정보를 제공하고 있다. 일래스틱서치를 사용하는 개발자, 운영자, 관리자 모두에게 권하고 싶다.
이 책에서 다루는 내용
■ 멋진 검색 애플리케이션이란
■ 확장성 있는 검색 솔루션 개발
■ 어떤 언어로든 사용 가능한 일래스틱서치
■ 설정과 튜닝
이 책의 대상 독자
검색 지향 애플리케이션을 개발하고 관리하는 개발자 및 관리자를 위한 완벽한 책이다.
이 책의 구성
1부는 핵심 기능을 설명한다. 즉, 어떻게 데이터를 모델을 만들고 색인해서 활용 사례의 요구에 맞게 검색하고 분석할 수 있는지 설명한다. 1부를 마칠 때쯤에는 일래스틱서치 기능의 구성 요소를 이해할 수 있을 것이다.
1장, ‘일래스틱서치 소개’에서는 일반적으로 검색 엔진의 역할이 무엇이고, 특히 일래스틱서치의 기능이 무엇인지 개요를 살펴본다. 일래스틱서치로 어떤 종류의 문제를 해결할 수 있는지 알 수 있다.
2장, ‘기능 들여다보기’에서는 문서를 색인하고, 검색하고, 집계로 데이터를 분석하고, 여러 노드로 확장하는 주요 기능에 관해 하나씩 살펴본다.
3장, ‘데이터 색인, 변경, 삭제’에서는 데이터를 색인, 갱신, 삭제할 때 사용할 수 있는 옵션을 알아본다. 문서에서 어떤 종류의 필드를 다룰 수 있는지, 문서를 쓸 때 무슨 일이 일어나는지도 함께 살펴본다.
4장, ‘데이터 검색’에서는 전문 검색 영역을 깊이 있게 살펴본다. 중요한 쿼리와 필터 타입을 알아보고, 동작하는 방법과 언제 어떤 것을 사용할지 알아본다.
5장, ‘데이터 분석’에서는 어떻게 분석을 통해 텍스트가 문서와 쿼리 형태에서 검색에 사용되는 토큰으로 쪼개지는지 설명한다. 일래스틱서치의 전문 검색 잠재력을 완전히 사용하기 위해서 서로 다른 분석기를 어떻게 사용하는지, 그리고 어떻게 여러분 자신만의 분석기를 만드는지도 살펴본다.
6장, ‘유사도 검색’에서는 유사도에 초점을 맞춰 전문 검색 기량을 완성하도록 도와준다. 문서의 점수에 영향을 주는 요소들과 어떻게 서로 다른 스코어링 알고리즘을 사용해서 다루는지, 특정 쿼리나 필드의 우선순위를 조정하거나 점수를 조정하기 위해 좋아요(likes)나 리트윗(retweet) 수 등의 문서의 값들을 사용하는지 살펴본다.
7장, ‘집계로 데이터 살펴보기’에서는 실시간 분석을 위해 집계를 사용하는 방법을 알아본다. 집계와 쿼리를 결합하는 방법, 그리고 건초 더미에서 바늘을 찾기(2년 전 누군가 폴란드에서 떨어뜨린) 위해 어떻게 이들을 중첩하는지 살펴본다.
8장, ‘도큐먼트 간 관계’에서는 밴드와 그 밴드의 앨범과 같은 관계형 데이터를 다룬다. 중첩 문서나 부모-자식 관계 같은 일래스틱서치 기능을 어떻게 사용하는지 알아보고, 역정규화나 애플리케이션에서의 조인(application-side join)처럼 단일하지(flat) 않은 데이터를 색인하고 검색하기 위한 일반적인 NoSQL 기술도 살펴본다.
2부는 제품에 핵심 기능을 넣을 수 있도록 돕는다. 이를 위해 각 기능의 동작 원리 및 성능과 확장성에 대한 영향을 살펴본다.
9장, ‘스케일 아웃’에서는 여러 노드로 확장하는 것을 알아본다. 색인 샤드를 구성하고 복제하는 방법을 살펴보고, 현재 설계가 향후의 데이터도 대비할 수 있게 한다. 예를 들어, 오버샤딩(oversharding)하거나 시간 기준의 색인을 사용한다.
10장, ‘성능 극대화’에서는 클러스터의 성능을 더 짜내도록 돕는 요령들을 알아본다. 방법에 따라 일래스틱서치가 캐시를 사용하고 데이터를 디스크에 쓰는 방법뿐만 아니라, 사용 사례에 따라 일래스틱서치를 변경했을 때의 다양한 균형점도 살펴본다.
11장, ‘클러스터 관리’에서는 제품의 클러스터를 모니터하고 관리하는 방법을 알려준다. 주시해야 하는 중요한 지표들과 데이터를 백업하고 복구하는 방법, 그리고 색인 템플릿과 에일리어스(alias) 같은 손쉬운 방법을 어떻게 사용하는지 다룬다.
이 책의 여섯 가지 부록은 알아야 하지만, 어떤 사용 사례에는 관련이 없을 수도 있는 기능들을 다룬다. ‘부록’이라는 단어로 인해 이 기능들을 깊이 없이 다룬다고 오해하지는 않기를 바란다. 나머지 부분들처럼 어떻게 각 기능이 내부적으로 동작하는지 상세히 알아볼 것이다.
부록 A, ‘지리 공간 데이터로 작업하기’에서는 지리 공간 검색과 집계에 대해 알아본다.
부록 B, ‘플러그인’에서는 일래스틱서치 플러그인을 관리하는 방법을 알아본다.
부록 C, ‘하이라이팅’에서는 검색 결과에서 쿼리 텀에 대해 하이라이팅하는 것을 알아본다.
부록 D, ‘일래스틱서치 모니터링 플러그인’에서는 일래스틱서치를 관리하기 위해 제품에서 사용할 수도 있을 서드 파티 모니터링 툴을 소개한다.
부록 E, ‘퍼컬레이터로 검색 뒤집기’에서는 많은 쿼리에 대해 몇 개의 문서를 일치시키기 위한 퍼컬레이터를 사용하는 방법을 알아본다.
부록 F, ‘자동완성과 검색어 제안 기능을 위한 제안자 사용하기’에서는 검색 제안과 자동 완성 기능을 구현하기 위한 제안자(suggesters)를 사용하는 방법을 알아본다.
목차
목차
- 1부
- 1장. 일래스틱서치 소개
- 일래스틱서치로 검색 문제 해결
- 일반적인 일래스틱서치 사용 사례
- 요약
- 2장. 기능 들여다보기
- 논리적인 배치 이해하기: 문서, 타입, 색인
- 물리적 배치 이해하기: 노드와 샤드
- 새로운 데이터 색인
- 데이터 검색하고 가져오기
- 일래스틱서치 설정하기
- 클러스터에 노드 추가하기
- 요약
- 3장. 데이터 색인, 변경, 삭제
- 도큐먼트 종류를 정의하는 매핑 사용하기
- 도큐먼트 필드를 정의하는 기본 타입
- 배열과 다중 필드
- 사전 정의된 필드 사용하기
- 기존 도큐먼트 변경하기
- 데이터 삭제하기
- 요약
- 4장. 데이터 검색
- 검색 요청의 구조
- 쿼리와 필터 DSL 소개
- 쿼리와 복합 쿼리 결합
- 매치와 필터 쿼리를 넘어서서
- 존재하는 필드에 필터로 쿼리
- 실무를 위한 최선의 쿼리 선택
- 요약
- 5장. 데이터 분석
- 무엇을 분석할 것인가?
- 도큐먼트에 분석기 사용하기
- 분석 API로 텍스트 분석하기
- 분석기, 토크나이저, 토큰 필터
- Ngram, edge ngram, shingle
- 스태밍
- 요약
- 6장. 유사도 검색
- 일래스틱서치에서 점수를 계산하는 방법
- 다른 점수 방법
- 부스팅
- explain을 통해 어떻게 문서의 점수가 결정되는지 이해하기
- 질의 재점수로 점수에 대한 영향 줄이기
- function score를 이용한 사용자 설정 점수 계산
- 다시 묶어서 보여주기
- 스크립트를 이용한 정렬
- 필드 데이터 우회
- 요약
- 7장. 집계로 데이터 살펴보기
- 집계의 내부 이해하기
- 지표 집계
- 다중 버킷 집계
- 중첩 집계
- 요약
- 2부
- 8장. 도큐먼트 간 관계
- 도큐먼트 간 관계를 정의하는 옵션
- 필드 값처럼 개체 갖기
- 중첩 타입: 중첩 도큐먼트 연결하기
- 부모-자식 관계: 개별 도큐먼트 연결하기
- 중복 데이터 연결을 사용하는 비정규화
- 애플리케이션 측 조인
- 요약
- 9장. 스케일 아웃
- 일래스틱서치 클러스터에 노드를 추가하기
- 다른 일래스틱서치 노드 발견하기
- 클러스터에서 노드를 제거하기
- 일래스틱서치 노드 업그레이드하기
- cat API 사용하기
- 스케일링 전략
- 앨리어스
- 라우팅
- 요약
- 10장. 성능 극대화
- 요청을 그룹화하기
- 루씬의 세그먼트 관리를 최적화하기
- 캐시 최적화
- 이외의 성능에 관련된 트레이드오프
- 요약
- 11장. 클러스터 관리
- 기본 설정 향상시키기
- 할당 인식
- 성능 병목 모니터링
- 데이터 백업하기
- 요약
- 부록 A. 지리 공간 데이터로 작업하기
- 지점들 그리고 지점 간의 거리
- 정렬 기준에 거리를 추가하기
- 거리에 기반을 둔 필터와 집계
- 지한 점이 어떤 모양에 속해 있는가?
- 모양 교차점
- 부록 B. 플러그인
- 플러그인으로 작업하기
- 플러그인 설치하기
- 플러그인 접속하기
- 어떤 플러그인이 필요한지 일래스틱서치에 알려주기
- 플러그인을 삭제하거나 갱신하기
- 부록 C. 하이라이팅
- 하이라이팅 기본
- 하이라이팅 옵션
- 하이라이터 구현
- 부록 D. 일래스틱서치 모니터링 플러그인
- 빅데스크: 클러스터를 시각화한다
- 일래스틱HQ: 관리와 모니터링을 함께
- 헤드: 고급 쿼리 생성
- 코프: 스냅샷, 워머, 퍼컬레이터
- 마블: 상세한 분석
- 세마텍스트 SPM: 스위스 군용 칼
- 부록 E. 퍼컬레이터로 검색 뒤집기
- 퍼컬레이터 기초
- 성능 팁
- 기능성 요령
- 부록 F. 자동완성과 검색어 제안 기능을 위한 제안자 사용하기
- 검색어 추천 제안자
- 자동완성 제안자
도서 오류 신고
정오표
정오표
[p.46 : 그림 1.5]
검색 요청
"bicycle race"
->
검색 요청
"bicycle show"
[p.212 : 키워드]
[p.212 : 소문자화]