Coming soon

Elasticsearch in Action

강력하고 실용적인 검색 애플리케이션 구축
$48.60
SKU
9791161759654

 

COMING SOON [판매 예정] 상품입니다.

[판매 예정] 상품은 출간일(Publication Date) 이후 주문이 가능합니다.

 

▷출간일 이후에도 아직 [판매 예정]으로 보이는 경우 info@kbookstore.com 으로 문의주세요.

주문 가능 여부를 확인 후 안내해 드리겠습니다.

COMING SOON [판매 예정] 상품입니다.

[판매 예정] 상품은 출간일(Publication Date) 이후 주문이 가능합니다.

* 출간일 이후에도 아직 [판매 예정]으로 보이는 경우 info@kbookstore.com 으로 문의주세요.

[Free shipping over $100]

Standard Shipping estimated by Fri 02/7 - Thu 02/13 (주문일로부 10-14 영업일)

Express Shipping estimated by Tue 02/4 - Thu 02/6 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2025/01/31
Pages/Weight/Size 188*235*36mm
ISBN 9791161759654
Categories IT 모바일 > OS/데이터베이스
Description
이 책은 현대적인 검색엔진인 일래스틱서치의 기능과 활용법을 폭넓게 다룬 실용적인 안내서다. 기초적인 검색 개념부터 고급 쿼리 작성, 시스템 관리까지 일래스틱서치의 핵심 기능과 아키텍처를 체계적으로 탐구하며, 초보자와 고급 사용자 모두에게 유용한 지식을 제공한다. 초반에는 검색의 기본 개념과 일래스틱서치의 독창적인 기능을 소개하며, 도큐먼트 API 실습을 통해 검색 조건 및 고급 쿼리 작성을 학습할 수 있도록 안내한다. 이어서 데이터 매핑, 텍스트 분석, 풀텍스트 검색, 복합 쿼리 작성, 집계 처리 등 검색 기술 전반을 심층적으로 다룬다. 후반부에서는 프로덕션 환경에서의 일래스틱서치 운영과 성능 최적화에 중점을 두고, 클러스터 관리, 샤드 구성, 스냅숏 생성 및 복구, 성능 병목 현상 해결 등 실무적 관리 기법을 상세히 설명한다. 또한 부록에서는 설치 가이드, 데이터 전처리용 인제스트 파이프라인 구성, 다양한 프로그래밍 언어와의 연동 방법을 제공한다. 검색 기술을 배우고 활용하고자 하는 모든 독자에게 강력한 도구와 실무적 인사이트를 제공할 것이다.
Contents
1장 개요

1.1 좋은 검색엔진이란?
1.2 검색은 새로운 표준
1.2.1 구조화된 데이터와 비구조화된 데이터
1.2.2 데이터베이스 기반 검색
1.2.3 데이터베이스와 검색엔진
1.3 최신 검색엔진
1.3.1 기능
1.3.2 인기 검색엔진
1.4 일래스틱서치 개요
1.4.1 핵심 영역
1.4.2 일래스틱 스택
1.4.3 일래스틱서치 사용 사례
1.4.4 부적절한 일래스틱서치 사용
1.4.5 오해
1.5 대중적 채택
1.6 생성형 AI와 최신 검색
요약

2장 시작해 보기

2.1 데이터와 함께 일래스틱서치 준비
2.1.1 온라인 서점
2.1.2 도큐먼트 인덱싱
2.1.3 첫 도큐먼트 인덱싱
2.1.4 더 많은 도큐먼트 인덱싱
2.2 데이터 검색
2.2.1 도큐먼트 집계
2.2.2 도큐먼트 검색
2.3 풀텍스트 검색
2.3.1 match 쿼리: 특정 저자의 책 검색
2.3.2 AND 연산자를 사용한 match 쿼리
2.3.3 _bulk API를 사용해 도큐먼트 인덱싱
2.3.4 다중 필드 검색
2.3.5 결과 부스팅
2.3.6 문구 검색
2.3.7 누락된 단어가 있는 문구
2.3.8 철자 오류 처리
2.4 텀 수준 쿼리
2.4.1 term 쿼리
2.4.2 range 쿼리
2.5 compound 쿼리
2.5.1 bool 쿼리
2.5.2 must 절
2.5.3 must_not 절
2.5.4 should 절
2.5.5 filter 절
2.6 집계
2.6.1 메트릭
2.6.2 버킷 집계
요약

3장 아키텍처

3.1 개요
3.1.1 데이터 입력
3.1.2 데이터 처리
3.1.3 데이터 출력
3.2 빌딩 블록
3.2.1 도큐먼트
3.2.2 인덱스
3.2.3 데이터 스트림
3.2.4 샤드와 복제본
3.2.5 노드와 클러스터
3.3 역인덱스
3.4 관련성
3.4.1 관련성 점수
3.4.2 관련성(유사성) 알고리듬
3.5 라우팅 알고리듬
3.6 스케일링
3.6.1 스케일 업(수직 확장)
3.6.2 스케일 아웃(수평 확장)
요약

4장 매핑

4.1 매핑 개요
4.1.1 매핑 정의
4.1.2 첫 도큐먼트 인덱스 생성
4.2 동적 매핑
4.2.1 타입 추론 메커니즘
4.2.2 동적 매핑의 한계
4.3 명시적 매핑
4.3.1 인덱싱 API를 사용한 매핑
4.3.2 매핑 API를 사용해 스키마 업데이트
4.3.3 기존 필드 수정은 허용되지 않는다
4.3.4 타입 강제
4.4 데이터 타입
4.5 핵심 데이터 타입
4.5.1 text 데이터 타입
4.5.2 keyword 데이터 타입
4.5.3 date 데이터 타입
4.5.4 숫자 데이터 타입
4.5.5 boolean 데이터 타입
4.5.6 range 데이터 타입
4.5.7 IP 데이터 타입
4.6 고급 데이터 타입
4.6.1 geo_point 데이터 타입
4.6.2 object 데이터 타입
4.6.3 nested 데이터 타입
4.6.4 flattened 데이터 타입
4.6.5 join 데이터 타입
4.6.6 search_as_you_type 데이터 타입
4.7 다중 데이터 타입이 있는 필드
요약

5장 도큐먼트 작업

5.1 도큐먼트 인덱싱
5.1.1 도큐먼트 API
5.1.2 인덱싱 메커니즘
5.1.3 새로 고침 프로세스 사용자 정의
5.2 도큐먼트 검색
5.2.1 단일 도큐먼트 API 사용
5.2.2 다중 도큐먼트 검색
5.2.3 ID 쿼리
5.3 응답 조작
5.3.1 응답에서 메타데이터 제거
5.3.2 소스 도큐먼트 제외
5.3.3 필드 포함 및 제외
5.4 도큐먼트 업데이트
5.4.1 도큐먼트 업데이트 메커니즘
5.4.2 _update API
5.4.3 스크립트 업데이트
5.4.4 도큐먼트 교체
5.4.5 Upsert
5.4.6 Upsert로 업데이트
5.4.7 쿼리를 사용한 업데이트
5.5 도큐먼트 삭제
5.5.1 ID로 삭제하기
5.5.2 쿼리로 삭제(_delete_by_query)
5.5.3 범위 쿼리로 삭제
5.5.4 모든 도큐먼트 삭제
5.6 벌크 도큐먼트 작업
5.6.1 _bulk API 형식
5.6.2 벌크 인덱싱 도큐먼트
5.6.3 독립된 엔티티와 다중 액션
5.6.4 cURL을 사용한 대량 요청
5.7 도큐먼트 재인덱싱
요약

6장 인덱싱 작업

6.1 인덱싱 작업
6.2 인덱스 생성
6.2.1 암묵적으로 인덱스 생성(자동 생성)
6.2.2 명시적으로 인덱스 생성
6.2.3 맞춤형 설정이 포함된 인덱스
6.2.4 매핑이 포함된 인덱스
6.2.5 별칭이 있는 인덱스
6.3 인덱스 읽기
6.3.1 공개 인덱스 읽기
6.3.2 숨겨진 인덱스 읽기
6.4 인덱스 삭제
6.5 인덱스 닫기와 열기
6.5.1 인덱스 닫기
6.5.2 인덱스 열기
6.6 인덱스 템플릿
6.6.1 컴포저블(인덱스) 템플릿 만들기
6.6.2 컴포넌트 템플릿 생성
6.7 인덱스 모니터링 및 관리
6.7.1 인덱스 통계
6.7.2 다중 인덱스 및 통계
6.8 고급 작업
6.8.1 인덱스 분할
6.8.2 인덱스 축소
6.8.3 인덱스 별칭 롤오버
6.9 인덱스 수명 주기 관리
6.9.1 인덱스 수명 주기
6.9.2 인덱스 수명 주기 수동 관리
6.9.3 롤오버가 포함된 수명 주기
요약

7장 텍스트 분석

7.1 개요
7.1.1 구조화되지 않은 데이터 쿼리
7.1.2 분석기가 구원해 주다
7.2 분석기 모듈
7.2.1 토큰화
7.2.2 정규화
7.2.3 분석기 구조
7.2.4 분석기 테스트
7.3 내장 분석기
7.3.1 standard 분석기
7.3.2 simple 분석기
7.3.3 whitespace 분석기
7.3.4 keyword 분석기
7.3.5 fingerprint 분석기
7.3.6 pattern 분석기
7.3.7 언어 분석기
7.4 맞춤형 분석기
7.4.1 고급 맞춤형
7.5 분석기 지정
7.5.1 인덱싱을 위한 분석기
7.5.2 검색용 분석기
7.6 문자 필터
7.6.1 HTML 스트립(hmtl_strip) 필터
7.6.2 매핑 문자 필터
7.6.3 파일을 통한 매핑
7.6.4 pattern_replace 문자 필터
7.7 토크나이저
7.7.1 standard 토크나이저
7.7.2 ngram과 edge_ngram 토크나이저
7.7.3 기타 토크나이저
7.8 토큰 필터
7.8.1 스테머 필터
7.8.2 shingle 필터
7.8.3 synonym 필터
요약

8장 검색 소개

8.1 개요
8.2 검색은 어떻게 작동할까?
8.3 영화 샘플 데이터
8.4 검색 기본 사항
8.4.1 _search 엔드포인트
8.4.2 쿼리와 필터 컨텍스트
8.5 요청과 응답 분석
8.5.1 검색 요청
8.5.2 검색 응답
8.6 URI 요청
8.6.1 제목으로 영화 검색하기
8.6.2 특정 영화 검색하기
8.6.3 추가 매개변수
8.6.4 쿼리 DSL로 URI 요청 지원
8.7 쿼리 DSL
8.7.1 샘플 쿼리
8.7.2 cURL에 대한 DSL 쿼리
8.7.3 집계를 위한 쿼리 DSL
8.7.4 리프 및 복합 쿼리
8.8 검색 기능
8.8.1 페이지 매김
8.8.2 강조 표시
8.8.3 관련성 점수 설명
8.8.4 정렬
8.8.5 결과 조작
8.8.6 인덱스 및 데이터 스트림 검색
요약

9장 텀 수준 검색

9.1 텀 수준 검색 개요
9.1.1 텀 수준 쿼리는 분석되지 않는다
9.1.2 텀 수준 쿼리 예
9.2 term 쿼리
9.2.1 텍스트 필드에 대한 term 쿼리
9.2.2 term 쿼리 예시
9.2.3 간소화된 텀 수준 쿼리
9.3 terms 쿼리
9.3.1 terms 쿼리의 예
9.3.2 terms 룩업 쿼리
9.4 ids 쿼리
9.5 exists 쿼리
9.6 range 쿼리
9.7 wildcard 쿼리
9.8 prefix 쿼리
9.8.1 간소화 버전 쿼리
9.8.2 prefix 쿼리 속도 향상
9.9 fuzzy 쿼리
요약

10장 풀텍스트 검색

10.1 개요
10.1.1 정밀도
10.1.2 재현율
10.2 샘플 데이터
10.3 match_all 쿼리
10.3.1 match_all 쿼리 작성
10.3.2 match_all 쿼리의 간소화 버전
10.4 match_none 쿼리
10.5 match 쿼리
10.5.1 match 쿼리의 형식
10.5.2 match 쿼리를 사용해 검색
10.5.3 match 쿼리 분석
10.5.4 여러 단어 검색
10.5.5 최소한 몇 단어 일치
10.5.6 fuzziness 키워드를 사용한 오타 수정
10.6 match_phrase 쿼리
10.7 match_phrase_prefix 쿼리
10.8 multi_match 쿼리
10.8.1 베스트 필드
10.8.2 dis_max 쿼리
10.8.3 타이브레이커
10.8.4 개별 필드 부스팅
10.9 query_string 쿼리
10.9.1 query_string 쿼리의 필드
10.9.2 기본 연산자
10.9.3 구문이 포함된 query_string 쿼리
10.10 fuzzy 쿼리
10.11 간단한 문자열 쿼리
10.12 simple_query_string 쿼리
요약

11장 복합 쿼리

11.1 제품 데이터 샘플
11.1.1 products 스키마
11.1.2 products 인덱싱
11.2 복합 쿼리
11.3 bool 쿼리
11.3.1 bool 쿼리 구조
11.3.2 must 절
11.3.3 must 절 강화
11.3.4 must_not 절
11.3.5 must_not 절 개선
11.3.6 should 절
11.3.7 filter 절
11.3.8 모든 절 결합
11.3.9 명명된 쿼리
11.4 상수 점수
11.5 부스팅 쿼리
11.6 디스정션 맥스(dis_max) 쿼리
11.7 function_score 쿼리
11.7.1 random_score 함수
11.7.2 script_score 함수
11.7.3 field_value_factor 함수
11.7.4 함수 점수의 결합
요약

12장 고급 검색

12.1 위치 검색 소개
12.1.1 bounding_box 쿼리
12.1.2 geo_distance 쿼리
12.1.3 geo_shape 쿼리
12.2 지리 공간 데이터 타입
12.2.1 geo_point 데이터 타입
12.2.2 geo_shape 데이터 타입
12.3 지리 공간 쿼리
12.4 geo_bounding_box 쿼리
12.5 geo_distance 쿼리
12.6 geo_shape 쿼리
12.7 shape 쿼리
12.8 span 쿼리
12.8.1 샘플 데이터
12.8.2 span_first 쿼리
12.8.3 span_near 쿼리
12.8.4 span_within 쿼리
12.8.5 span_or 쿼리
12.9 특수 쿼리
12.9.1 distance_feature 쿼리
12.9.2 pinned 쿼리
12.9.3 more_like_this 쿼리
12.9.4 percolate 쿼리
요약

13장 집계

13.1 개요
13.1.1 엔드포인트와 구문
13.1.2 검색 및 집계 결합
13.1.3 다중 및 중첩 집계
13.1.4 결과 무시
13.2 메트릭 집계
13.2.1 샘플 데이터
13.2.2 value_count 메트릭
13.2.3 avg 메트릭
13.2.4 sum 메트릭
13.2.5 min 및 max 메트릭
13.2.6 stats 메트릭
13.2.7 extended_stats 메트릭
13.2.8 cardinality 메트릭
13.3 버킷 집계
13.3.1 히스토그램
13.3.2 자식 수준 집계
13.3.3 사용자 정의 범위 집계
13.3.4 텀즈 집계
13.3.5 다중 텀즈 집계
13.4 부모 및 형제 집계
13.4.1 부모 집계
13.4.2 형제 집계
13.5 파이프라인 집계
13.5.1 파이프라인 집계 유형
13.5.2 샘플 데이터
13.5.3 파이프라인 집계 구문
13.5.4 사용 가능한 파이프라인 집계
13.5.5 cumulative_sum 부모 집계
13.5.6 max_bucket 및 min_bucket 형제 파이프라인 집계
요약

14장 관리자

14.1 클러스터 확장
14.1.1 클러스터에 노드 추가
14.1.2 클러스터 상태
14.1.3 읽기 처리량 증가
14.2 노드 통신
14.3 샤드 크기 조정
14.3.1 단일 인덱스 설정
14.3.2 다중 인덱스 설정
14.4 스냅숏
14.4.1 시작하기
14.4.2 스냅숏 저장소 등록
14.4.3 스냅숏 생성
14.4.4 스냅숏 복원
14.4.5 스냅숏 삭제
14.4.6 스냅숏 자동화
14.5 고급 구성
14.5.1 기본 구성 파일
14.5.2 로깅 옵션
14.5.3 자바 가상 머신 옵션
14.6 클러스터 마스터
14.6.1 마스터 노드
14.6.2 마스터 선출
14.6.3 클러스터 상태
14.6.4 쿼럼
14.6.5 스플릿 브레인 문제
14.6.6 전용 마스터 노드
요약

15장 성능 및 문제 해결

15.1 검색과 속도 문제
15.1.1 최신 하드웨어
15.1.2 도큐먼트 모델링
15.1.3 text 타입 대신 keyword 타입 선택
15.2 인덱스 속도 문제
15.2.1 시스템 생성 식별자
15.2.2 벌크 요청
15.2.3 새로 고침 빈도 조정
15.3 불안정한 클러스터
15.3.1 클러스터가 GREEN이 아니다
15.3.2 할당되지 않은 샤드
15.3.3 디스크 사용량 임곗값
15.4 서킷 브레이커
15.5 마무리
Author
마두수단 콘다,최중연
복잡한 문제를 단순화하고, 큰 그림을 조망하며, 프로그래밍 언어와 고급 프레임워크의 새로운 영역에 뛰어드는 데 헌신하는 경험 많은 기술자다. 기술에 대한 열정은 단순한 직업이 아니라 평생에 걸친 탐험과 학습의 여정이다. 복잡한 문제를 더 간단하고 관리하기 쉬운 해결책으로 변환하는 예술에 열광하며, 끊임없이 변화하는 기술 환경에서 명확한 방향을 제시한다. 25년에 이르는 경력 동안 솔루션 아키텍트, 수석/주 엔지니어 등 다양한 역할을 맡아왔다. 그러나 언제나 프로그래밍 언어, 프레임워크, 신기술에 대한 지식을 공유하고 동료들의 이해를 도우려는 열정으로 가득했다. 크레디트 스위스(Credit Suisse), UBS, 미즈호(Mizuho), 도이치 은행(Deutsche Bank), 할리팩스(Halifax)와 같은 은행부터 브리티시 페트롤륨(British Petroleum)과 브리티시 에어웨이즈(British Airways)와 같은 에너지 및 항공 분야의 선도 기업에 이르기까지 다양한 고객을 위해 고품질 솔루션을 설계하고 제공하는 데 중요한 역할을 해 왔다.

소프트웨어 프로젝트를 시작부터 완료까지 이끌고 복잡한 비즈니스 문제를 해결하기 위한 솔루션을 설계하는 것뿐만 아니라 전략적인 로드맵, 비용 효율적인 아키텍처 및 제품 디자인을 만드는 데까지 확장한다. 전략가이자 비전가로, 멘토링과 사상 리더십을 결합한 리더십 스타일로 팀의 잠재력을 끌어내고 경계를 넓히며 영감을 주는 것으로 유명하다. 초급부터 고급까지 다양한 수준의 전문가들을 가르치고 훈련하는 것에 자부심을 느끼며, 주니어들을 멘토링하고 지도하는 데에도 열정적이다.

인상적인 경력 외에도 저명한 저자다. 자바, 스프링, 하이버네이트 생태계에 관한 책과 비디오 강좌는 많은 사람에게 호평을 받으며, 기술 세계에서 학습과 탐구 문화를 조성하려는 헌신을 더욱 부각시킨다. 열정적인 블로거로서 기술을 넘어 엔지니어의 소프트 스킬이라는 중요한 영역을 탐구하는 통찰력 있는 글을 쓰고자 항상 노력한다. 명확성과 간결함을 추구하는 복잡한 기술 개념을 소화하기 쉬운 내용으로 정제하기 위해 끊임없이 노력한다. 복잡한 아이디어를 열 살짜리 아이도 이해할 수 있는 수준으로 단순화해 모든 사람이 고급 기술에 접근하고 이해할 수 있게 하는 데 중점을 둔다.
복잡한 문제를 단순화하고, 큰 그림을 조망하며, 프로그래밍 언어와 고급 프레임워크의 새로운 영역에 뛰어드는 데 헌신하는 경험 많은 기술자다. 기술에 대한 열정은 단순한 직업이 아니라 평생에 걸친 탐험과 학습의 여정이다. 복잡한 문제를 더 간단하고 관리하기 쉬운 해결책으로 변환하는 예술에 열광하며, 끊임없이 변화하는 기술 환경에서 명확한 방향을 제시한다. 25년에 이르는 경력 동안 솔루션 아키텍트, 수석/주 엔지니어 등 다양한 역할을 맡아왔다. 그러나 언제나 프로그래밍 언어, 프레임워크, 신기술에 대한 지식을 공유하고 동료들의 이해를 도우려는 열정으로 가득했다. 크레디트 스위스(Credit Suisse), UBS, 미즈호(Mizuho), 도이치 은행(Deutsche Bank), 할리팩스(Halifax)와 같은 은행부터 브리티시 페트롤륨(British Petroleum)과 브리티시 에어웨이즈(British Airways)와 같은 에너지 및 항공 분야의 선도 기업에 이르기까지 다양한 고객을 위해 고품질 솔루션을 설계하고 제공하는 데 중요한 역할을 해 왔다.

소프트웨어 프로젝트를 시작부터 완료까지 이끌고 복잡한 비즈니스 문제를 해결하기 위한 솔루션을 설계하는 것뿐만 아니라 전략적인 로드맵, 비용 효율적인 아키텍처 및 제품 디자인을 만드는 데까지 확장한다. 전략가이자 비전가로, 멘토링과 사상 리더십을 결합한 리더십 스타일로 팀의 잠재력을 끌어내고 경계를 넓히며 영감을 주는 것으로 유명하다. 초급부터 고급까지 다양한 수준의 전문가들을 가르치고 훈련하는 것에 자부심을 느끼며, 주니어들을 멘토링하고 지도하는 데에도 열정적이다.

인상적인 경력 외에도 저명한 저자다. 자바, 스프링, 하이버네이트 생태계에 관한 책과 비디오 강좌는 많은 사람에게 호평을 받으며, 기술 세계에서 학습과 탐구 문화를 조성하려는 헌신을 더욱 부각시킨다. 열정적인 블로거로서 기술을 넘어 엔지니어의 소프트 스킬이라는 중요한 영역을 탐구하는 통찰력 있는 글을 쓰고자 항상 노력한다. 명확성과 간결함을 추구하는 복잡한 기술 개념을 소화하기 쉬운 내용으로 정제하기 위해 끊임없이 노력한다. 복잡한 아이디어를 열 살짜리 아이도 이해할 수 있는 수준으로 단순화해 모든 사람이 고급 기술에 접근하고 이해할 수 있게 하는 데 중점을 둔다.