Top

ElasticSearch Cookbook 2/e [DevOps 관점으로 설명한 일래스틱서치 쿡북]

  • 원서명ElasticSearch Cookbook, Second Edition (ISBN 9781783554836)
  • 지은이알베르토 파로(Alberto Paro)
  • 옮긴이김용환
  • ISBN : 9788960778184
  • 40,000원
  • 2016년 02월 05일 펴냄
  • 페이퍼백 | 544쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

요약

이 책은 일래스틱서치의 핵심 개념을 설명할 뿐만 아니라 여러 언어와의 연동 방법과 일래스틱서치를 DevOps 관점으로 설명한 내용을 예제로 쉽게 풀이한다. 애플리케이션에서 REST API뿐 아니라 쓰리프트(Thrift) 기반의 파이썬, 자바 API를 이용한 통합 개발 방법을 설명하고, 일래스틱서치를 다른 NoSQL과 연동해 확장할 수 있는 리버 플러그인을 소개한다. 또한 운영 관점에서 많은 도움이 될 다양한 모니터링 플러그인과 사용자 정의 플러그인을 개발할 수 있는 방법 등을 다루고 있어, 일래스틱서치를 실무에 적용하고 확장하고자 하는 이들에게 충실한 가이드가 될 것이다.

이 책에서 다루는 내용

일래스틱서치로 최고의 클라우드 토폴로지를 선택하고 플러그인으로 일래스틱서치 기능 확장

색인 단계를 완벽히 제어할 수 있는 맞춤형 매핑 개발

색인과 도큐먼트로 복잡한 질의 생성

분석 집계를 실행한 검색 결과의 최적화

원본 간 데이터를 동기화하고 전달할 수 있는 리버S(QL, NoSQL, 웹 기반) 관리

주요 태스크를 실행할 수 있는 웹 인터페이스 개발

클러스터와 노드 성능 모니터링

이 책의 대상 독자

이 책은 일래스틱서치를 시작하고 싶거나 일래스틱서치에 관한 지식을 좀 더 쌓고 싶은 사용자와 개발자를 대상으로 한다. 일래스틱서치를 이용한 모든 부분을 다루며, 일상적인 사용을 위한 해결책과 힌트를 제공한다. 예제의 복잡도를 낮춰 일래스틱서치가 다루는 내용에 집중할 수 있으며, 일래스틱서치를 쉽고 완벽하게 이해할 수 있다.

이 책의 후반부에서는 자바 및 파이썬 프로그래밍 언어와의 일래스틱서치 통합을 다루며, 사용자에게 일래스틱서치 기능을 자바와 파이썬 기반의 애플리케이션과 어떻게 통합할 수 있는지 보여준다.

12장, ‘플러그인 개발’은 일래스틱서치와 일래스틱서치 핵심 부분의 고급 기능을 다룬다. 따라서 12장을 완벽히 이해하려면 자바에 대한 사전 지식이 필요하다.

이 책의 구성

1장, ‘시작하기’는 일래스틱서치의 기본 개념과 일래스틱서치와의 통신 방법을 소개한다.

2장, ‘다운로드와 설정’은 일래스틱서치를 시작할 수 있는 기본 단계, 간단한 설치부터 다중 노드의 실행까지 다룬다.

3장, ‘매핑 관리’는 색인과 검색 품질을 향상할 수 있는 데이터 필드의 정확한 정의를 알아본다.

4장, ‘기본 작업’은 일래스틱서치에 데이터를 추가하고 관리하는 데 필요한 공통 작업을 살펴본다.

5장, ‘검색, 질의, 필터’는 일래스틱서치의 핵심 검색 기능을 다룬다. 검색 DSL은 일래스틱서치에 질의할 수 있는 유일한 방법이다.

6장, ‘집계’는 일래스틱서치의 또 다른 기능으로, 사용자 경험을 증대시키고, 정보를 깊이 검색하기 위해 검색 결과를 기반으로 분석할 수 있는 기능을 다룬다.

7장, ‘스크립트’는 다양한 프로그래밍 언어를 이용해 일래스틱서치를 스크립트로 사용자 정의하는 방법을 다룬다.

8장, ‘리버’는 데이터베이스, NoSQL 솔루션, 데이터 스트림 같은 여러 원본으로부터 데이터를 가져올 수 있는 기능으로 일래스틱서치를 확장한다.

9장, ‘클러스터와 노드 모니터링’은 일반적인 위험을 이해할 수 있는 클러스터와 노드의 동작을 분석하는 방법을 보여준다.

10장, ‘자바 통합’은 REST와 네이티브 프로토콜을 사용하는 자바 애플리케이션에서 일래스틱서치를 통합하는 방법을 다룬다.

11장, ‘파이썬 통합’은 공식 일래스틱서치 파이썬 클라이언트와 파이썬 스타일로 개발된 PyES 라이브러리 사용 방법을 다룬다.

12장, ‘플러그인 개발’은 다양한 플러그인 타입, 사이트 플러그인과 네이티브 플러그인을 생성하는 방법을 다룬다. 예시에서 플러그인의 뼈대를 보여주고, 개발 프로세스와 빌드 방법을 설명한다.

저자/역자 소개

지은이의 말

요즘 출시되는 애플리케이션의 주요 요구사항 중 하나는 검색 기능이다. 이런 검색 요구사항을 만족시키는 많은 솔루션을 상업용 제품이나 오픈소스 세계에서 찾을 수 있다. 검색에 많이 쓰이는 라이브러리 중 하나는 아파치 루씬(Apache Lucene)이다. 아파치 솔라(Apache Solr), 인덱스탱크(Indextank), 일래스틱서치 같은 많은 검색 솔루션은 루씬 라이브러리를 기반으로 만들어졌다.

일래스틱서치는 클라우드와 분산 컴퓨팅에 사용할 수 있게 개발됐다. Compass(http://www.compass-project.org) 개발자로 유명한 셰이 바논(Shay Banon)은 일래스틱서치의 주요 개발자며, 2010년 3월에 일래스틱서치의 첫 번째 버전을 배포했다.

일래스틱서치의 주목적은 검색 엔진이 되는 것이며, 일래스틱서치를 데이터 저장소로 사용할 수 있고, 집계를 사용해 분석 엔진으로 활용할 수 있다.

일래스틱서치에는 JSON/REST 기능, 맵(Map)/리듀스(Reduce) 접근 방식의 네이티브 분산 처리 기능, 쉬운 설치 기능, 플러그인 확장 기능 같은 획기적인 기능이 많다. 언급한 기능의 상세한 정보와 그 밖의 일래스틱서치 기능을 이 책에서 살펴볼 것이다.

일래스틱서치 이전에는 아파치 솔라가 일래스틱서치의 일부 기능을 제공했었다. 그러나 아파치 솔라는 클라우드에서 동작하도록 설계되지 않았으며, JSON/REST API는 지원하지 않았다. 최근 몇 년 동안, 2012년에 SlorCloud가 출시되면서 이 상황이 조금 변했다. 일래스틱서치와 아파치 솔라 제품을 완벽히 비교하고 싶은 사용자는 라팔 쿡(Rafał Kuć)이 쓴 글(http://blog.sematext.com/2012/08/23/solr-vs-elasticsearch-part-1-overview/)을 읽으면 도움이 될 것이다.

일래스틱서치는 계속 진화하는 제품이며, 일래스틱서치 회사(일래스틱서치의 상업성 지원을 제공하는 셰이 바논이 설립한 회사) 는 새로운 기능을 가진 일래스틱서치를 배포하고, 일래스틱서치 사용자는 플러그인(깃허브GitHub에서 주로 내려받을 수 있다)을 배포한다.

2012년에 설립된 일래스틱서치 회사는 총 1억 4백만 불의 자금을 조달했다. 일래스틱서치 회사의 공동 창업자이자 CEO인 스티븐 슈르만(Steven Schuurman)이 일래스틱서치의 성공을 다음과 같이 잘 표현하고 있다.

"이렇게 짧은 시간에 투자자로부터 이런 지원을 받았다는 것이 믿기지 않습니다. 이것은 우리가 하고 있는 일의 중요성을 보여줍니다. 비즈니스는 사람과 기계가 만든 데이터를 계속해서 생성하고 있으며, 비즈니스가 새로운 데이터 중심의 프로젝트에서 시작하든, 현재 비즈니스에서 하둡 또는 그 밖의 빅 데이터 투자를 활용해 시도하든, 이 자산에서 가치를 얻을 수 있는 비즈니스가 전략적 목표가 됩니다."

일래스틱서치는 검색 제품 중 괄목할 만한 실적을 내고 있으며, 5천만 개의 장소를 색인하는 포스퀘어(Foursquare)와 온라인 음악 배포 플랫폼인 SoundCloud, StumbleUpon과 천 4백만 회원을 가진 기업 소셜 네트워크 Xing 같은 고객에게 도움을 주고 있다. 또한 20테라바이트 데이터와 13억 개의 파일을 검색하는 깃허브, 로글리(Loggly)에도 도움을 주고 있다. 로글리 로그파일을 빨리 분석하기 위해, 데이터 클러스터를 색인할 수 있는 키/값 저장소로 일래스틱서치를 사용한다.

나는 일래스틱서치야말로 시장에서 나온 검색 솔루션 중 가장 강력하고, 사용하기 쉽다고 생각한다. 이 책에서 제시한 많은 예제를 통해 독자가 일래스틱서치를 관리할 수 있는 지식, 열정, 모범 사례를 전달하고자 노력했다.

지은이 소개

알베르토 파로(Alberto Paro)

엔지니어, 프로젝트 매니저, 소프트웨어 개발자다. 현재 빅 데이터 테크놀로지스(Big Data Technologies) 사에서 CTO로 일하며, 빅 데이터와 NoSQL 제품 소프트웨어 엔지니어링 부문의 프리랜서 컨설팅을 하고 있다. 최근에 생겨난 솔루션과 빅 데이터 처리, NoSQL, 자연어 처리를 비롯해 신경망과 관련된 애플리케이션 연구를 좋아한다. 8살 때 신클레이어 스펙트림(Sinclair Spectrum)에서 베이직(BASIC) 프로그래밍을 시작해, 현재까지 다양한 운영체제, 애플리케이션, 프로그래밍 경험을 많이 쌓았다.

2000년에 다중 사용자와 다중 기기 웹 애플리케이션 설계 관련 학위 논문으로 폴리 테크니코 디 밀라노 대학(Politecnico di Milano) 컴퓨터과학 공학과를 졸업했고, 약 1년 동안 대학교에서 교수를 도왔다. 넷플래닛 회사(The Net Planet Company)의 혁신적인 아이디어에 큰 매력을 느낀 후 지식 관리 솔루션과 데이터 마이닝 제품 만드는 일을 시작했다. 2014년 여름, 회사가 빅 데이터 테크놀로지스 사에 인수되면서, 현재는 스칼라와 파이썬을 사용한 최신 빅 데이터 소프트웨어(스파크(Spark), 아카(Akka), 카산드라(Cassandra), 얀(YARN))를 개발하고 있다. 또한 2013년부터 빅 데이터, 기계 학습, 일래스틱서치 프리랜서 컨설팅을 시작했다.

아이들과 놀지 않는 여유 시간에는 오픈소스 프로젝트에서 개발하는 것을 좋아한다. 고등학교 시절, 그놈GNOME 환경(gtkmm)과 관련된 프로젝트에 기여했다. 그가 선호하는 프로그래밍 언어 중 하나는 파이썬이며, 몽고DB(MongoDB)에 장고(Django)를 사용해 NoSQL 백엔드(장고-몽고DB-엔진)를 처음으로 개발했다. 2010년, 장고로 전자상거래 사이트에 검색 기능을 추가하기 위해 일래스틱서치를 사용하기 시작했고, PyES(파이썬 스타일로 개발된 일래스틱서치 클라이언트)를 개발했을 뿐만 아니라 초기 일래스틱서치 몽고DB 리버를 개발했다. 저서로는 팩트출판사의 『Elasticsearch Cookbook』이 있고, 『전문 검색과 분석을 위한 Elasticsearch 서버』(에이콘, 2014)의 기술 감수를 했으며, ‘일래스틱서치를 이용한 검색 서버 개발하기Building a Search Server with ElasticSearch’ 비디오 강좌를 만들었다.

옮긴이의 말

일래스틱서치는 루씬(Lucene)을 기반으로 만들어졌지만, 복잡한 루씬 API를 쓰지 않고도 쉽게 검색할 수 있게 도와주며, 성능도 탁월합니다. 또한 주키퍼(Zookeeper) 없이 클라우드 환경에서 확장을 쉽게 할 수 있으며, 복제본replica을 지원해 저장된 데이터의 손실이 없게 도와주는 NoSQL입니다.

저는 카카오에서 일래스틱서치를 이용해 서비스를 개발했고 현재 운영하고 있습니다. 현업에서 일래스틱서치를 처음 쓰다 보니 모르는 것도 많고, 배워야 할 것이 많았습니다. 기존의 여러 일래스틱서치 책에서 도움을 받았지만, Rest API뿐 아니라 자바, 파이썬으로 개발하는 방법, 플러그인 개발 방법, 운영 관점의 책이 필요했습니다.

이 책은 DevOps의 실무적인 관점으로 일래스틱서치를 이해할 수 있는 좋은 책입니다. Rest API뿐 아니라 파이썬, 자바 API를 사용해 효율적으로 개발할 수 있는 가이드를 제공합니다. 플러그인을 개발하는 방법도 살펴볼 수 있습니다. 또한 운영 관점에서 HQ나 HEAD 같은 모니터링 플러그인의 유용성을 설명하고, 리버 플러그인을 통해 여타 NoSQL과 연동하는 방법과 플러그인 개발 방법도 다룹니다. 아키텍처와 DevOps 관점으로 일래스틱서치를 살펴볼 수 있는 책을 번역하게 되어 기쁘게 생각합니다.

이 책에서 설명하는 일래스틱서치의 버전은 1.4입니다. 일래스틱서치의 1.x 버전을 사용하는 경우, 이 책을 참조할 수 있습니다. 그러나 최근에 일래스틱서치 2.0이 배포되면서 일부 바뀐 내용이 있습니다. 이와 관련한 상세한 내용은 https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-2.0.html에서 참조할 수 있으며, 일래스틱서치의 2.0의 공식 문서는 https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html에서 확인할 수 있습니다.

옮긴이 소개

김용환

마흔 한 살의 평범한 개발자로, 네이버를 거쳐 현재는 카카오에서 서비스를 개발하고 있다. 다양한 시도와 도전을 좋아하며, 이와 관련한 개발과 실무 경험들은 블로그(http://knight76.tistory.com)에 기록하고 있다. 에이콘 출판사의 『Ansible 설정 관리』(2015)를 번역했다.

목차

목차
  • 1장 시작하기
    • 개요
    • 노드와 클러스터 이해하기
    • 노드 서비스 이해하기
    • 데이터 관리하기
    • 클러스터, 복제, 샤딩 이해하기
    • 일래스틱서치로 통신하기
    • HTTP 프로토콜 사용하기
    • 네이티브 프로토콜 사용하기
    • 쓰리프트 프로토콜 사용하기

  • 2장 다운로드와 설정
    • 개요
    • 일래스틱서치 다운로드와 설치하기
    • 네트워크 설정하기
    • 노드 설정하기
    • 리눅스 시스템 설정하기
    • 노드 타입 설정하기
    • 일래스틱서치 플러그인 설치하기
    • 수동으로 플러그인 설치하기
    • 플러그인 삭제하기
    • 로깅 설정 변경하기

  • 3장 매핑 관리
    • 개요
    • 명시적 매핑 생성 이용하기
    • 기본 타입 매핑하기
    • 배열 매핑하기
    • 객체 매핑하기
    • 도큐먼트 매핑하기
    • 도큐먼트 매핑에 동적 템플릿 이용하기
    • 중첩 객체 관리하기
    • 자식 도큐먼트 관리하기
    • 다중 매핑으로 필드 추가하기
    • geo point 필드 매핑하기
    • geo shape 필드 매핑하기
    • IP 필드 매핑하기
    • 첨부 필드 매핑하기
    • 매핑에 메타데이터 추가하기
    • 그 밖의 분석기 명세하기
    • completion 추천기 매핑하기

  • 4장 기본 작업
    • 개요
    • 색인 생성하기
    • 색인 삭제하기
    • 색인 열고 닫기
    • 색인에 매핑 저장하기
    • 매핑 얻기
    • 매핑 삭제하기
    • 색인 새로 고치기
    • 색인 플러시하기
    • 색인 최적화하기
    • 색인 또는 타입 존재 여부 확인하기
    • 색인 설정 관리하기
    • 색인 앨리어스 사용하기
    • 도큐먼트 색인하기
    • 도큐먼트 얻기
    • 도큐먼트 삭제하기
    • 도큐먼트 변경하기
    • 원자적 작업 빨리 하기(벌크 작업)
    • GET 작업 빨리 하기(다중 GET).

  • 5장 검색, 질의, 필터
    • 개요
    • 검색 실행하기
    • 결과 정렬하기
    • 결과 강조하기
    • scan 질의 실행하기
    • 올바른 질의 추천하기
    • 일치한 결과의 개수 계산하기
    • 질의로 삭제하기
    • 모든 도큐먼트의 일치 여부 확인하기
    • 하나의 키워드로 질의/필터 사용하기
    • 다중 키워드로 질의/필터 사용하기
    • prefix 질의/필터 사용하기
    • Boolean 질의/필터 사용하기
    • range 질의/필터 사용하기
    • span 질의 사용하기
    • match 질의 사용하기
    • ID 질의/필터 사용하기
    • has_child 질의/필터 사용하기
    • top_children 질의 사용하기
    • has_parent 질의/필터 사용하기
    • regexp 질의/필터 사용하기
    • function score 질의 사용하기
    • exists와 missing 필터 사용하기
    • and/or/not 필터 사용하기
    • geo bounding box 필터 사용하기
    • geo polygon 필터 사용하기
    • geo distance 필터 사용하기
    • QueryString 질의 사용하기
    • template 질의 사용하기

  • 6장 집계
    • 개요
    • 집계 실행하기
    • stats 집계 실행하기
    • terms 집계 실행하기
    • range 집계 실행하기
    • histogram 집계 실행하기
    • date histogram 집계 실행하기
    • filter 집계 실행하기
    • global 집계 실행하기
    • geo distance 집계 실행하기
    • nested 집계 실행하기
    • top hit 집계 실행하기

  • 7장 스크립트
    • 개요
    • 추가 스크립트 플러그인 설치하기
    • 스크립트 관리하기
    • 스크립트로 데이터 정렬하기
    • 스크립트로 리턴 필드 계산하기
    • 스크립트로 검색 필터링하기
    • 스크립트로 도큐먼트 변경하기

  • 8장 리버
    • 개요
    • 리버 관리하기
    • 카우치DB 리버 사용하기
    • 몽고DB 리버 사용하기
    • 래빗MQ 리버 사용하기
    • JDBC 리버 사용하기
    • 트위터 리버 사용하기

  • 9장 클러스터와 노드 모니터링
    • 개요
    • API를 이용해 클러스터 헬스 제어하기
    • API를 이용해 클러스터 상태 제어하기
    • API를 이용해 클러스터 노드 정보 얻기
    • API를 이용해 노드 통계 얻기
    • 저장소 관리하기
    • 스냅샷 실행하기
    • 스냅샷 복구하기
    • 빅데스크 설치와 사용하기
    • 일래스틱서치 헤드 설치와 사용하기
    • 세마텍스트 SPM 설치와 사용하기
    • 마블 설치와 사용하기

  • 10장 자바 통합
    • 개요
    • HTTP 클라이언트 생성하기
    • 네이티브 클라이언트 생성하기
    • 네이티브 클라이언트를 이용해 색인 관리하기
    • 매핑 관리하기
    • 도큐먼트 관리하기
    • 벌크 액션 관리하기
    • 질의 생성하기
    • 기본 검색 실행하기
    • 집계로 검색 실행하기
    • 스크롤/스캔 검색 실행하기

  • 11장 파이썬 통합
    • 개요
    • 클라이언트 생성하기
    • 색인 관리하기
    • 매핑 관리하기
    • 도큐먼트 관리하기
    • 표준 검색 실행하기
    • 집계로 검색 실행하기

  • 12장 플러그인 개발
    • 개요
    • 사이트 플러그인 개발하기
    • 네이티브 플러그인 개발하기
    • REST 플러그인 개발하기
    • 클러스터 액션 개발하기
    • 분석기 플러그인 개발하기
    • 리버 플러그인 개발하기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안