• 시작하세요! 엘라스틱서치
  • 루씬 기반의 실시간 오픈소스 검색엔진

  • 김종민 지음

  • 오픈소스 & 웹 시리즈_068, 데이터 & 데이터베이스 시리즈 _ 010
  • ISBN: 9788998139797
  • 30,000원 | 2015년 02월 16일 발행 | 408쪽



누구나 쉽게 구축할 수 있는 나만의 검색엔진

이 책은 엘라스틱서치 검색엔진의 구조와 특징에 관해 설명한다. 검색엔진에 익숙하지 않고 처음 접해보는 독자들을 대상으로 하고 있으며, 예제를 통해 엘라스틱서치에 데이터가 어떤 모습으로 저장되고 검색되는지 쉽게 이해할 수 있게 돕는다.

이 책에서는 엘라스틱서치가 제공하는 다양한 기능을 하나하나 설명하고, 나아가 ELK 스택을 이용해 나만의 대시보드 애플리케이션을 만드는 내용까지 다루고 있다. 사용자 데이터나 머신 데이터 등을 다루기 위해 검색 엔진을 찾고 있는 사용자와 기업이라면 이 책을 통해 엘라스틱서치와 만나볼 것을 적극 권장한다.

 

책 속으로

오늘날에는 SNS, 블로그, 언론사 등으로부터 어마어마한 양의 데이터가 매일 쏟아져 나오고 있으며, 이렇게 범람하는 정보 사이의 패턴과 연결점을 찾아 가치 있는 정보를 찾아내고 가공하는 기술이 빅데이터라는 이름의 트렌드로 자리 잡았습니다. 수많은 기업과 단체들이 빅데이터 연구에 힘을 쏟고 있으며 최근 자신들의 노하우를 가지고 데이터 엔지니어링을 전문으로 하는 스타트업들도 많이 생기고 있습니다.

필자 역시 데이터를 다루는 스타트업을 시작하면서 여러 가지 관련 기술을 찾고 배우던 중 엘라스틱서치를 만났습니다. 빅데이터 시스템 구축을 위해 여러 시행착오를 거쳐 가며 복잡한 기술들을 배워 나가던 필자에게 엘라스틱서치는 충격 그 자체였습니다. 프로세스를 실행한 것만으로 노드들이 자동으로 연결되어 분산 시스템이 바로 완성되며, 생성된 노드로 데이터를 옮겨가며 스스로 데이터 무결성을 유지하는 모습은 이전에 어떤 시스템에서도 보지 못했던 유연함이었습니다.

엘라스틱서치의 매력에 푹 빠져 사용하면서 국내에 엘라스틱서치를 더 알리고 정보를 교환하고 싶은 생각이 들어 커뮤니티 활동을 시작했습니다. 엘라스틱서치 본사 매니저인 Leslie Hawthorn과 연락이 되어 국내 커뮤니티 활동이 엘라스틱서치 본사 블로그에도 업데이트되고, 페이스북 그룹 링크도 게시되는 등 많은 일이 있었습니다. 특히 나날이 늘어가는 커뮤니티 멤버와 국내에도 엘라스틱서치를 도입하는 기업들이 점점 늘어가는 걸 보면서 앞으로 엘라스틱서치의 전망이 밝다는 것을 실감할 수 있었습니다.

-- 저자 서문 중에서

엘라스틱서치는 강력한 오픈소스 검색엔진인 아파치 루씬을 기반으로 사용자가 손쉽게 대용량 데이터를 저장하고 검색할 수 있게 해준다. 노드 바인딩을 통해 시스템의 빠른 확장이 가능해서 어떤 환경에서도 쉽게 적용할 수 있으며, 특히 클라우드 시스템과 함께 사용하기 쉽다. 이 밖에도 다양한 색인 및 검색 기능을 제공함으로써 대용량 데이터를 다루는 사용자 또는 기업이라면 반드시 도입을 고려해야 한다.

★ 이 책에서 다루는 내용 ★

  • 역파일 색인과 검색엔진의 개념
  • 클러스터와 노드로 구성된 엘라스틱서치의 시스템 구조
  • 검색을 위한 다양한 질의 방법
  • 데이터 분석 및 색인 과정에 대한 자세한 설명
  • ELK 스택을 이용한 대시보드 애플리케이션 구축

김종민

소프트웨어 공학을 전공했고 정부와 기업에서 다양한 프로젝트를 수행했다. 페이스북에 한국 엘라스틱서치 사용자 그룹(https://www.facebook.com/groups/elasticsearch.kr/)을 개설해 운영 중이며, 엘라스틱서치를 널리 알리기 위해 노력하고 있다. 현재는 스타트업에서 CTO로 근무하고 있으며 세상을 더 행복하게 만드는 일을 꿈꾼다.

  • ▣ 01장: 엘라스틱서치
    • 1.1 엘라스틱서치 사용 사례
    • 1.2 엘라스틱서치 특징
    • 1.3 데이터 색인
    • 1.4 JSON 문서와 REST API
      • 1.4.1 JSON 문서
      • 1.4.2 REST API
    • 1.5 솔라, 몽고디비와 엘라스틱서치 비교
      • 1.5.1 솔라와 엘라스틱서치
      • 1.5.2 몽고DB와 엘라스틱서치
    • 1.6 정리
    •  
  • ▣ 02장: 엘라스틱서치 설치와 실행
    • 2.1 엘라스틱서치 설치
      • 2.1.1 엘라스틱서치 설치 파일 비교
      • 2.1.2 유닉스 운영체제에서 설치와 실행
      • 2.1.3 유닉스 서비스로 설치 및 실행
      • 2.1.4 윈도 운영체제에서 설치 및 실행
      • 2.1.5 윈도 서비스로 설치 및 실행
    • 2.2 엘라스틱서치 프로그램 구조
    • 2.3 환경 설정
      • 2.3.1 bin/elasticsearch.in.sh
      • 2.3.2 config/elasticsearch.yml
      • 2.3.3 config/logging.yml
    • 2.4 플러그인 설치
    • 2.5 정리
    •  
  • ▣ 03장: 데이터 처리
    • 3.1 엘라스틱서치의 데이터 구조
    • 3.2 엘라스틱서치 데이터 처리
      • 3.2.1 데이터 입력
      • 3.2.2 데이터 삭제
      • 3.2.3 데이터 업데이트(_update) API
      • 3.2.4 파일을 이용한 데이터 처리
      • 3.2.5 벌크(_bulk) API를 이용한 배치 작업
      • 3.2.6 벌크 UDP API
    • 3.3 포스트맨을 이용한 윈도에서 엘라스틱서치 사용
    • 3.4 정리
    •  
  • ▣ 04장: 시스템 구조
    • 4.1 클러스터와 노드
      • 4.1.1 노드 바인딩
      • 4.1.2 마스터 노드와 데이터 노드
    • 4.2 샤드와 복사본
    • 4.3 네트워크 바인딩과 디스커버리
      • 4.3.1 젠 디스커버리
      • 4.3.2 아마존 EC2 디스커버리
    • 4.4 정리
    •  
  • ▣ 05장: 검색
    • 5.1 검색(_search) API
    • 5.2 URI 검색
      • 5.2.1 q(query)
      • 5.2.2 df(default field)
      • 5.2.3 default_operator
      • 5.2.4 explain
      • 5.2.5 _source
      • 5.2.6 fields
      • 5.2.7 sort
      • 5.2.8 timeout
      • 5.2.9 from
      • 5.2.10 size
      • 5.2.11 search_type
    • 5.3 리퀘스트 바디 검색
      • 5.3.1 size, from, fields
      • 5.3.2 sort
      • 5.3.3 _source
      • 5.3.4 partial_fields, fielddata_fields
      • 5.3.5 highlight
    • 5.4 정리
    •  
  • ▣ 06장: 페이셋과 어그리게이션
    • 6.1 페이셋
      • 6.1.1 텀 페이셋
      • 6.1.2 범위 페이셋
      • 6.1.3 히스토그램 페이셋
      • 6.1.4 날짜 히스토그램 페이셋
      • 6.1.5 필터와 질의 페이셋
      • 6.1.6 통계 페이셋
      • 6.1.7 위치 거리 페이셋
    • 6.2 어그리게이션
      • 6.2.1 최소, 최대, 합, 평균, 개수 어그리게이션
      • 6.2.2 상태, 확장 상태 어그리게이션
      • 6.2.3 글로벌 어그리게이션
      • 6.2.4 필터, 누락 어그리게이션
      • 6.2.5 텀 어그리게이션
      • 6.2.6 범위, 날짜 범위 어그리게이션
      • 6.2.7 히스토그램, 날짜 히스토그램 어그리게이션
      • 6.2.8 위치 거리, 위치 해시 그리드 어그리게이션
    • 6.3 정리
    •  
  • ▣ 07장: 질의(QueryDSL)
    • 7.1 쿼리
      • 7.1.1 텀, 텀즈 쿼리
      • 7.1.2 매치, 다중 매치(multi match) 쿼리
      • 7.1.3 불 쿼리
      • 7.1.4 문자열 쿼리
      • 7.1.5 접두어 쿼리
      • 7.1.6 범위 쿼리
      • 7.1.7 전체 매치 쿼리
      • 7.1.8 퍼지 쿼리
    • 7.2 필터
      • 7.2.1 텀, 텀즈 필터
      • 7.2.2 범위 필터
      • 7.2.3 and, or, not 필터
      • 7.2.4 불 필터
      • 7.2.5 위치 필터
    • 7.3 정리
    •  
  • ▣ 08장: 매핑
    • 8.1 매핑(_mapping) API
    • 8.2 내장필드
      • 8.2.1 _id
      • 8.2.2 _source
      • 8.2.3 _all
      • 8.2.4 _analyzer
      • 8.2.5 _timestamp
      • 8.2.6 _ttl(time to live)
    • 8.3 데이터 타입
      • 8.3.1 문자열
      • 8.3.2 숫자
      • 8.3.3 날짜
      • 8.3.4 불린
      • 8.3.5 바이너리
      • 8.3.6 객체
      • 8.3.7 중첩
      • 8.3.8 좌표
      • 8.3.9 위치 모형
    • 8.4 다중필드
    • _8.4.1 다중필드
    • _8.4.2 토큰 수
    • _8.4 필드 복사
    • _8.5 정리
    •  
  • ▣ 09장: 분석
    • 9.1 분석
      • 9.1.1 분석 과정
      • 9.1.2 _analyze API
      • 9.1.3 사용자 정의 분석기
    • 9.2 분석기
      • 9.2.1 standard 분석기
      • 9.2.2 simple 분석기
      • 9.2.3 whitespace 분석기
      • 9.2.4 stop 분석기
      • 9.2.5 keyword 분석기
      • 9.2.6 pattern 분석기
      • 9.2.7 다국어 분석기
      • 9.2.8 snowball 분석기
    • 9.3 토크나이저
      • 9.3.1 standard 토크나이저
      • 9.3.2 nGram 토크나이저
      • 9.3.3 edgeNGram 토크나이저
      • 9.3.4 keyword 토크나이저
      • 9.3.5 letter 토크나이저
      • 9.3.6 lowercase 토크나이저
      • 9.3.7 whitespace 토크나이저
      • 9.3.8 pattern 토크나이저
      • 9.3.9 uax_url_email 토크나이저
      • 9.3.10 path_hierarchy 토크나이저
      • 9.3.11 classic 토크나이저
    • 9.4 토큰필터
      • 9.4.1 standard 토큰필터
      • 9.4.2 asciifolding 토큰필터
      • 9.4.3 length 토큰필터
      • 9.4.4 lowercase 토큰필터
      • 9.4.5 uppercase 토큰필터
      • 9.4.6 nGram 토큰필터
      • 9.4.7 edgeNGram 토큰필터
      • 9.4.8 porter_stem 토큰필터
      • 9.4.9 shingle 토큰필터
      • 9.4.10 stop 토큰필터
      • 9.4.11 word_delimiter 토큰필터
      • 9.4.12 stemmer 토큰필터
      • 9.4.13 keyword_marker 토큰필터
      • 9.4.14 keyword_repeat 토큰필터
      • 9.4.15 unique 토큰필터
      • 9.4.16 snowball 토큰필터
      • 9.4.17 synonym 토큰필터
      • 9.4.18 합성어 토큰필터
      • 9.4.19 reverse 토큰필터
      • 9.4.20 truncate 토큰필터
      • 9.4.21 trim 토큰필터
      • 9.4.22 limit 토큰필터
      • 9.4.23 hunspell 토큰필터
      • 9.4.24 cjk_bigram 토큰필터
      • 9.4.25 킵워드 토큰필터
    • 9.5 한글 형태소 분석기
    • 9.6 정리
  • 표3.1관계 데이터베이스와 엘라스틱서치 데이터 구조 비교

3번째 열(ROW) --> 행(ROW)

4번째 행(Column) --> 열(Column)

  • 308 예제 9.5 my_analyzer 분석기를 이용해서 문장 분석

curl -XPOST 'http://localhost:9200/books/_analyze -d 'Around the World in Eighty Days'

--> curl -XPOST 'http://localhost:9200/books/_analyze?analyzer=my_analyzer&pretty' -d 'Around the World in Eighty Days'

예제코드 관련 깃허브 페이지


엮인 글

엮인 글 주소: http://wikibook.co.kr/elasticsearch/trackback/