Top

Elasticsearch in Action [일래스틱서치의 핵심 기능과 고급 기능]

  • 원서명Elasticsearch in Action
  • 지은이라두 게오르게(Radu Gheorghe), 매튜 리 힌만(Matthew Lee Hinman), 로이 루소(Roy Russo)
  • 옮긴이이재익, 최중연, 이승진, 한우람
  • ISBN : 9788960779105
  • 45,000원
  • 2016년 10월 31일 펴냄
  • 페이퍼백 | 688쪽 | 188*235mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

요약

일래스틱서치는 루씬 기반의 실시간 검색을 제공하는 분산 검색엔진이다. 검색 기능뿐만 아니라 강력한 집계 기능을 제공해 실시간 분석엔진으로도 활용 가능하며, 데이터를 저장할 수 있어 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)를 사용하는 방법을 알아본다.

저자/역자 소개

지은이의 말

일래스틱서치는 2010년에 처음 나오고 인기가 점점 높아지고 있다. 검색엔진의 전통적인 사용 사례인 제품 검색부터 소셜 미디어의 실시간 분석, 애플리케이션 로그, 다른 유동 데이터까지 다양한 상황에서 사용되고 있다. 일래스틱서치의 강점은 풍부한 분석 기능뿐만 아니라 쉽고 효율적인 분석을 가능케 하는 분산 모델에 있다. 이 모든 것은 이미 자리 잡은 아파치 루씬 검색엔진 라이브러리를 기반으로 한다. 루씬 역시 지금에 이르러 같은 양의 데이터를 더 적은 CPU, 메모리, 디스크 공간으로 처리할 수 있도록 발전을 거듭하고 있다.
이 책은 서로 다른 분석기와 쿼리 타입을 사용해 유사도 튜닝부터 실시간 분석 목적으로 집계를 사용하는 것까지 일래스틱서치의 모든 주요 기능뿐 아니라 지리 공간 검색(geo-spatial)과 문서 퍼컬레이션(percolation) 같은 이색적인 기능도 다룬다.
책을 읽다 보면 일래스틱서치를 사용하기 쉽다는 것을 금방 알게 될 것이다. 수 시간 안에 문서를 넣고, 검색하고, 통계를 만들고, 하물며 데이터를 여러 대의 서버로 분산하고 복제하는 것조차 할 수 있다. 기본 동작과 설정이 매우 개발자 친화적이어서 사용자가 쉽게 개념 증명(Proof-of-concept) 작업을 하게 한다.
프로토타입에서 제품으로 옮겨가는 것은 다양한 기능 및 성능 제안과 마주치면서 종종 더 어려워지곤 한다. 따라서 각 기능이 내부적으로 어떻게 동작하는지 설명하려는 것이고, 이로 인해 훌륭한 검색 능력을 갖추게 되고 여러분의 클러스터로 좋은 읽기 쓰기 성능을 얻기 위한 최적화를 할 수 있게 될 것이다.

지은이 소개

라두 게오르게(Radu Gheorghe)

풀타임으로 일래스틱 기반 솔루션에 집중하는 검색 컨설턴트이자 소프트웨어 엔지니어다.

매튜 리 힌만(Matthew Lee Hinman)

페타바이트의 데이터를 색인하고 검색하기 위해 일래스틱서치를 사용하는 높은 가용성을 가진 클라우드 기반 시스템을 개발한다.

로이 루소(Roy Russo)

포춘 500대 기업들에 예측 분석 솔루션을 제공하는 프레딕토 애널리틱스(Predicto Analytics)의 기술 담당 부사장이다.

옮긴이의 말

일래스틱서치는 루씬 기반의 실시간 검색을 제공하는 분산 검색엔진이다. 검색 기능 외에도 강력한 집계 기능을 제공하여 실시간 분석엔진으로도 활용 가능하고, 데이터를 저장할 수도 있어서 NoSQL 저장소로 활용할 수 있다. 넷플릭스(Netflix), 깃허브(Github), 위키피디아(Wikipedia) 등의 잘 알려진 사이트에서도 검색, 로그, 분석 등 다양한 용도로 클러스터를 운영하고 있다.
나는 2012년 사내 로그 시스템을 개발하면서 처음으로 일래스틱서치를 사용하기 시작했다. 기존 시스템을 새로 개발하면서 실시간 검색 기능을 제공하기 위해 몇 가지 오픈소스를 검토하였다.
일래스틱서치는 실시간 검색을 제공하면서 집계 기능을 제공하고, 설치와 시스템 확장도 용이해 로그 시스템 개발에 활용하기에 적합했다. 일관된 REST API를 제공한다. 필요한 기능은 플러그인으로 구현하거나 누군가에 의해 이미 구현된 오픈소스 플러그인을 활용할 수도 있다. 일래스틱서치라는 이름에 걸맞은 유연함에 감동한다.
초기 버전의 경우 버그도 많았고, 개발하면서 필요한 세세한 내용들과 제품을 운영하면서 발생하는 다양한 문제들을 해결하기에는 자료가 부족하여 메일링 리스트와 다양한 실험을 통해 많은 시간을 소비해야 했다. 최신 버전은 시스템 안정성이 높아지고 사용자도 많이 늘면서 매뉴얼과 인터넷의 자료만으로도 간단한 기능들을 쉽게 활용할 수 있지만 실무에서는 충분하지 않다.
『ElasticSearch in Action』은 색인, 검색 쿼리, 제안 쿼리, 운영 등 일래스틱서치 대부분의 기능들을 설치부터 운영까지 예제와 함께 설명하고 있어서, 일래스틱서치를 처음 시작하는 개발자, 이미 사용하고 있지만 고급 기능들의 활용 방법에 대해 궁금한 개발자, 설치와 설정 및 운영 노하우가 필요한 인프라 운영자까지 독자들에게 유용한 정보를 제공하고 있다.
일래스틱서치의 다양한 기능들을 사례를 통해 설명하고 있어서 각각의 기본 기능을 이해하면서 실제 어떻게 활용할지에 대해 이해하는 데 많은 도움을 줄 것이다.
- 이재익

옮긴이 소개

이재익

네이버에서 일래스틱서치를 기반으로 로그 관리시스템을 개발 및 운영하고 있으며, 로그 저장, 검색, 분석 관련 기술들과 오픈소스에 관심이 많다. 성장을 위해 새로운 시도를 하는 것을 좋아하고, 여가 시간에는 두 아들과 많은 시간을 보내려고 노력한다.

최중연

네이버에서 시계열 데이터 저장 서비스를 개발하고 있으며, 로그 데이터에 기반한 시계열 데이터 집계 및 저장에 관심이 많다. 이러한 운영 로그를 효과적으로 집계하고 시계열화해서 운영을 고도화하려는 목적으로 일래스틱서치를 접하게 되었고 번역에도 참여하게 됐다.

이승진

네이버에 근무하며 전사 로그 플랫폼 개발 및 운영 업무를 수행하였고, 대용량 분산 컴퓨팅과 그에 연관된 오픈소스 프로젝트들에 많은 관심을 가지고 있다. 현재 캘리포니아 어바인(Irvine)에서 수학 중이다.

한우람

네이버에서 BTS 및 품질관리도구를 운영하였고, 현재 로그관리시스템을 개발하고 있다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안