|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Elasticsearch实战》7 \8 y6 O$ z3 M+ ^
java电子书推荐理由:本书主要展示如何使用Elasticsearch构建可扩展的搜索应用程序。书中覆盖了Elasticsearch的主要特性,从使用不同的分析器和查询类型进行相关性调优,到使用聚集功能进行实时性分析,还有地理空间搜索和文档过滤等更多吸引人的特性。 全书共分两个部分,*部分解释了核心特性,内容主要涉及Elasticsearch的介绍,数据的索引、更新和删除,数据的搜索,数据的分析,使用相关性进行搜索,使用聚集来探索数据,文档间的关系等;第二部分介绍每个特性工作的更多细节及其对性能和可扩展性的影响,以便对核心功能进行产品化,内容主要涉及水平扩展和性能提升等。此外,本书还有6个附录(网上下载),提供了读者应该知道的特性,展示了关于地理空间搜索和聚集,如何管理Elasticsearch插件,学习在搜索结果中如何高亮查询单词,在生产环境中用来协助管理Elasticsearch的第三方的监控工具有哪些,如何使用Percolator过滤为多个查询匹配少量文档,如何使用不同的建议器来实现自动完成的功能。
: b1 }) i, z" o( U; r
! i; q3 M8 k0 e, t5 E作者:[美] 拉杜·乔戈(Radu Gheorghe) 马修·李·欣曼(Matthew, h0 C( `- g& m1 c: {& W, k" U
出版社:人民邮电出版社
! I3 p$ \4 o: W0 x+ y2 g出版时间:2018-10
8 S+ C/ g5 `* j- e6 z" M; {, \书籍价格:79.00元- s% K0 X) ]; ^
7 R9 \0 C8 h, F3 X. ~
: j. O' t- C- `
% ]9 I% c' u4 w4 m) l8 Jjava电子书目录:
6 M) _: A6 ?! f; w第一部分8 s% B g$ R2 |) Q+ F
: H3 o G4 {; u6 T. s5 a- I' b
第1章 Elasticsearch介绍 25 \9 [- b$ Z$ l3 Z) l) X
2 H% c2 i6 i: l4 \" d& |7 q1.1 用Elasticsearch解决搜索问题 36 z8 a. M; y, }7 c5 t# @
) ^, E" w4 ]9 `1.1.1 提供快速查询 3
' m; s1 T0 L0 W4 a: V1 g& _) B
8 I9 y$ L Z2 {5 y |% l) C1.1.2 确保结果的相关性 4 x( Z4 X N' Z4 \! D: ?, w
' p6 D* |$ \' a) D1.1.3 超越精确匹配 5( F/ X5 Y; Y: N( _. p+ O
* z# d. b1 n% r$ X: E- P% a; {+ N
1.2 探索典型的Elasticsearch使用案例 6
! w. B: v+ { A5 Q$ N7 V1 i0 s3 B# t- T& H* `
1.2.1 将Elasticsearch作为主要的后端系统 7
C) s& L9 i+ O$ S$ @& g
6 b4 L( B! X9 |* Z. y8 t1 Q1.2.2 将Elasticsearch添加到现有的系统 7
! c- b1 L" n# h! x6 A' B3 O3 F7 c# Q% {) w8 O
1.2.3 将Elasticsearch和现有工具一同使用 8) e: ]3 i, e, y% ^3 ~% K$ M
* t# Z' c' p) c1 S K
1.2.4 Elasticsearch的主要特性 10 x4 `# V! a4 u
1 }) N( x1 I/ F1.2.5 扩展Lucene的功能 10- }$ J5 T& j/ u1 {6 `, p
: ]" G8 \. q& [! ]% S) i9 J
1.2.6 在Elasticsearch中组织数据 12' Q. d$ p1 r$ r' |! r4 s' K7 r
/ E' J, d3 Q, a0 t c$ ]
1.2.7 安装Java语言 12# I S5 L8 i0 R! I5 @' H
& D {. L$ U. u3 j' c
1.2.8 下载并启动Elasticsearch 13' R, N6 }9 Y9 g# U
& Q6 D$ y# I r8 M& M* q
1.2.9 验证是否工作 147 j% B9 I& q ?* L+ ?9 z+ [8 u! ?
O( k0 N( }' B: [3 Y1.3 小结 16
* s, c w/ K: i/ ^! w+ F% A( z- ^- t" z" p5 b# x
第2章 深入功能 17; G5 `- c" J( ^; A
$ s" M3 n7 p! ^0 Z7 X% ]
2.1 理解逻辑设计:文档、类型和索引 18
~$ V, L& c4 t; z0 I+ \ A5 `. c3 ?1 W0 _
2.1.1 文档 19
& A5 Q& n- {) ~/ o4 Y# f
! M" s( Q, Z& l) D$ f! K u: m2.1.2 类型 20
8 J$ ~4 g7 E+ \3 l; f
7 l. J5 d0 k; P+ U2.1.3 索引 21. p4 U5 `( X; N) O8 F
. [+ l% F& _2 M A2 {' q( C+ L+ N1 O
2.2 理解物理设计:节点和分片 21
! q6 o2 b1 H T! Q |
* k8 S$ Y) a1 K" ?2.2.1 创建拥有一个或多个节点的集群 228 a- |1 T) Z! c) u
6 W6 X& O7 u( f9 n8 n% C% K9 n" f- H
2.2.2 理解主分片和副本分片 236 V; ^5 L' J) ~* l6 c, {" K
+ P p; Y2 W w G! v) z2.2.3 在集群中分发分片 25 E. G0 v) P/ a, [( d
# s% B3 H, F" l8 s( R* S
2.2.4 分布式索引和搜索 26
4 s6 b3 A7 M- Z' ?
/ W, f" w8 h" [& w, T+ @ s2.3 索引新数据 27( X2 {* n4 z; M) M4 l, b) [
% k' c& s' ~* E) d: ^2.3.1 通过cURL索引一篇文档 28
' K; M% c0 g- q. Q l* `# _1 H
# W% Z0 v) q+ x! Y' L+ j2.3.2 创建索引和映射类型 30
: u% g; R& C5 @
% D, G- \6 u" O% p2.3.3 通过代码样例索引文档 31" |& v( n6 E( n( D0 t4 y# `
, h7 {3 I& ^6 {1 {' `+ V% T2 H2.4 搜索并获取数据 32" } ]# E" C; n, y6 r' S: f& q, |
, Y/ i' d ?( x% w; z* Y, C$ x- |
2.4.1 在哪里搜索 33) A9 [+ [0 n2 @. H2 U& e
& @* q( ]4 M+ X/ G( e3 s2.4.2 回复的内容 33
4 u) K4 i) T; f# z
4 Z% d+ E! S7 I6 K( R2.4.3 如何搜索 36
w" U- F* f. Y# A5 R
+ o, d* \8 c& B2.4.4 通过ID获取文档 39
% V' C0 l8 |- x# L" D% ~ V3 L/ r" S' e& {
2.5 配置Elasticsearch 40* l. l, Q: `1 N/ E- S* D
" {* [* w, o: Q& l& B
2.5.1 在elasticsearch.yml中指定集群的名称 40" Z! r1 t8 T1 _3 j6 e0 E/ ~
& M7 V( z4 b# y! ~/ j2.5.2 通过logging.yml指定详细日志记录 41
7 Q; s+ }& T4 P+ e
# z3 j# |6 K( c$ `0 z2.5.3 调整JVM设置 41& z7 h5 N& Z( x* I" j( i3 x% i
# o. k' Z! `7 S8 T5 b1 G2.6 在集群中加入节点 42- j! _$ s* O+ @& |8 s2 r
" @# l* Y, o& w" E8 Q' \& G1 j% X; h2.6.1 启动第二个节点 43
7 Y2 z! p$ [9 [( i l; ~( X, R6 b1 a) p( W8 b6 P3 _5 @& q& [( d7 Y
2.6.2 增加额外的节点 44" ] R8 _; ?: c2 J7 L7 [" ^: X
! U7 a. ], G6 @7 H+ u6 R2.7 小结 45
! J7 v. S1 u+ K m( [$ `: g+ ^# ]* d' X4 y/ B4 C. \
第3章 索引、更新和删除数据 47
7 ?/ z& O3 g4 u" ^0 _7 g4 o
( j P) j% G4 s- n/ R3.1 使用映射来定义各种文档 489 t5 A8 ~: i. S( B. w
; E) B7 W4 Q( U5 s$ i3.1.1 检索和定义映射 49
* u2 c0 e& B% N
- |' G: r: \- _3.1.2 扩展现有的映射 50
# ` J4 G# w' J1 y* ?3 F2 Q" ?, j4 h F# r
3.2 用于定义文档字段的核心类型 51
& i* T1 `$ D1 n; [/ ~5 K$ D
# {; w* {+ x8 ~8 h3.2.1 字符串类型 52: _+ z9 r+ ~9 v2 k9 I$ f D% ^% h
5 x. \3 M5 w3 Q- h7 \- T3.2.2 数值类型 54/ j" z# W0 R6 u) @7 [0 r% B
0 v& H8 j$ c# `' n, t1 n$ e
3.2.3 日期类型 55. {3 o5 B4 q+ t* L+ i* J
% r: h* Q/ F- D) d6 r3.2.4 布尔类型 56
* j* p/ {& s+ p
# n9 u) X* [) ^" o8 Q3.3 数组和多字段 56* \4 J6 C" p, W6 Q
i7 Y7 N: d# F; k( }3 n# E
3.3.1 数组 564 c' i0 S2 v; G! m# n% u
4 n/ X0 _1 }0 y% J
3.3.2 多字段 57! M; B' i% v2 d4 A
$ J, `( m$ P5 [" _" b, {
3.4 使用预定义字段 58
" u8 w0 Y& t: K' Q0 a& C9 w$ ^7 t& S% ]
3.4.1 控制如何存储和搜索文档 59
$ }' d, Y: u, F* b
: H4 T+ R6 P' d1 `1 S3.4.2 识别文档 61
- k' @+ \9 B0 E- K4 a; x. t# n
/ ^; x& Y3 j, E0 ~6 z9 _5 D3.5 更新现有文档 63
0 R% Z1 ^+ L+ H% w2 [4 Q' G/ }9 J/ G! Z6 y& c0 j* c
3.5.1 使用更新API 645 ] U3 W/ J& i/ I l0 H
5 D* o3 r6 {( K# ]3.5.2 通过版本来实现并发控制 66
8 Q! r2 j% q) z% r7 [! y; b; m6 a6 Q1 [. ^
3.6 删除数据 69: Y7 k9 d( G2 ~# p1 i' V# l
. d' [& |8 f; a+ b: j+ p. M9 }3.6.1 删除文档 70" @; b( R9 {1 l
6 P6 `% X- P$ f0 O, `. W3.6.2 删除索引 712 v8 N- M1 C# l: ` F/ Y$ n
2 z; p+ P* I3 N- q: B
3.6.3 关闭索引 72
$ c1 T1 q& u) p: F! a7 Q
( N8 B+ y* K) O. C$ w) M' ?3.6.4 重新索引样本文档 735 w$ s# @/ J3 N& D* _9 n
& j: F X- q h+ c) q# a2 U3.7 小结 737 H! J! J. G( s; O7 Y( L
& I% P; A: X' I1 W' y第4章 搜索数据 74
p# ^) I9 q6 v Y) v! r1 P2 b- ?
4.1 搜索请求的结构 759 P; s: ^, u( Y4 y% H# A
9 d1 ?& z' U$ f9 b; D
4.1.1 确定搜索范围 75
% w; s4 O8 x1 _! A) x2 a
/ f8 r1 I# k. I+ b: j4 f+ G0 i" |4.1.2 搜索请求的基本模块 76: A/ G! \* f. \- o
$ W- X! }9 s( g9 B$ O8 V, E4 H
4.1.3 基于请求主体的搜索请求 78
0 u2 `8 f( F" f# Y' S' ?0 C1 _9 M# L2 V
4.1.4 理解回复的结构 81
$ w/ U# B$ x, s8 _9 n& h5 a9 M) U
# p* i$ r+ v+ H$ _/ k" a( k4.2 介绍查询和过滤器DSL 82; Z0 ^/ L- o: Z3 ~' Z/ N% \
2 D) U7 S _5 i7 |4.2.1 match查询和term过滤器 82
7 L# y0 {# |8 l- u O1 U4 X' v. r1 F; @- E* v- }
4.2.2 常用的基础查询和过滤器 85
% O8 A, w3 D. {9 X; e& R9 j
C* S5 o* ~5 B& c7 P& \4.2.3 match查询和term过滤器 91
# r/ _7 L+ U# |1 c: X0 {2 y3 W- n9 c! L
4.2.4 phrase_prefix查询 92
3 A; \" p- h6 l8 l, \8 l' a8 Q) y# Y) X2 Z, ^3 i: b, u2 G
4.3 组合查询或复合查询 93- R* L) `2 t' {$ y, u
- x5 \0 b2 M$ A; W4.3.1 bool查询 93* I. C; |- m0 `7 @! a" U8 C
/ |; `( o* r# ~5 M; A( A# z9 f4.3.2 bool过滤器 96
0 y5 h: A$ t* _$ F: ~6 e6 L( A V/ G, M8 p! E5 W8 o
4.4 超越match和过滤器查询 985 C# G6 U# q4 z: N% l
3 u" v& b/ \- ?' i Z& q+ D
4.4.1 range查询和过滤器 98
! Y/ U# V2 r5 J1 C! s5 Y
1 T& ? ~" s2 B' U$ r' q" `4.4.2 prefix查询和过滤器 99" h/ z+ }3 \, s) [
' G K' Q5 j; L1 S! |
4.4.3 wildcard查询 1004 a; j* K7 S$ z% i; p5 D- C0 j/ |
# K! G7 q+ P) G" Y" p1 d, Y' b4.5 使用过滤器查询字段的存在性 102- [5 {1 P# }% D9 @
7 C9 B! ^/ i) b) G0 H2 z! Z# x4.5.1 exists过滤器 102
: L3 w o' I) c" v* B9 J8 g& D) `& a0 X
4.5.2 missing过滤器 102: O2 a8 E; X5 O
( b0 Z4 q9 B$ D+ ^: l
4.5.3 将任何查询转变为过滤器 103. i1 T4 P0 @' {2 o3 o1 t
w. a2 R% `; ~0 g) X. ~, F
4.6 为任务选择最好的查询 104
& ~" h. |8 `/ L; [
. c4 D$ C. Y- n5 p' y4.7 小结 1054 w! L# K) g" H5 u5 U
; G8 J( R" u0 s. R$ b, N' X. E第5章 分析数据 106: j" u X, m8 x. F6 B2 l7 a! R: ~
9 L5 W5 c" S5 W: S5 f
5.1 什么是分析 106 Z) D, L9 y- O' O' k4 K" R, p
% P' u( e: K7 D5 ]. V0 K: O5.1.1 字符过滤 107& z. e) q! {/ v
8 K3 Y' j. L) g% ?1 Q* V6 y5.1.2 切分为分词 108- [6 Z- k% F0 G% ]' o+ Q9 ~
0 u [3 \% i- Z& O1 R
5.1.3 分词过滤器 108
- p- }% ~& |$ ]
: e; y, c$ c1 {, S% o" D4 N5.1.4 分词索引 108# H! i9 `! U* T1 }
7 x( ^3 ^, C7 q, l7 B
5.2 为文档使用分析器 1099 V1 A8 R0 e2 U4 ?7 ^* l; K
% [, u: ?- U& r+ s* W5 B
5.2.1 在索引创建时增加分析器 109
* g: \! e' e6 K. ~; [0 d8 P$ j3 T2 @7 Q% V& l& _
5.2.2 在Elasticsearch的配置中添加分析器 111, w3 Y) B( @3 u, h4 c1 R
7 s$ B" q9 Z0 l5 v! K0 r" X- T
5.2.3 在映射中指定某个字段的分析器 1124 t+ J1 F' U/ S5 |3 O2 Y8 P
# q" q/ @$ h( P0 N9 i W9 f0 m' Y5.3 使用分析API来分析文本 113
+ U+ ^& W& ^* u0 Z# ]& S
! E# e0 f; t5 U* u! w. L5.3.1 选择一个分析器 114
+ _& H% {3 B0 J7 w0 w" s/ N; Q( D0 _+ p# v; @
5.3.2 通过组合即兴地创建分析器 115 [: P8 J, S( F2 F% u" z$ g
% G# O) M- H5 |$ U) x; b
5.3.3 基于某个字段映射的分析 115
6 x2 |6 q7 S( M' S+ l% y( P" Y! R% s% ^( @+ i9 A/ u
5.3.4 使用词条向量API来学习索引词条 1168 x0 k" H0 U+ g7 T
7 J* r$ U0 e) E# ]: N5.4 分析器、分词器和分词过滤器 117
* Y( T5 A) P. [( O2 s# \7 `: o, G+ @4 g3 `8 T% S: o7 J
5.4.1 内置的分析器 117
. b# t3 D# W0 M4 d+ K, e- S
1 v+ P/ }- p5 G4 w- L- {5.4.2 分词器 1195 v$ g+ P2 N' \$ A+ p
4 b8 \$ j/ I o% O- p+ U5.4.3 分词过滤器 122
5 ^5 |0 A! }5 |& F, a' G6 k2 [' j% g6 b( M
5.5 N元语法、侧边N元语法和滑动窗口 128- k0 p# P1 C& R, K3 c) j+ e- t g
6 E9 ]+ o- t, k8 k7 v" t$ a
5.5.1 一元语法过滤器 128
7 v. q2 U2 Q; Y q! E! s: n. _4 V% ~% F/ c- j( `3 E( F
5.5.2 二元语法过滤器 129
1 ^/ P1 a5 v" k% v: I7 B/ |0 i+ P4 w3 Y6 @
5.5.3 三元语法过滤器 129
! }$ Y5 t7 n9 R; n! Q0 h/ N" _; r0 Q. @$ f% W: A# ?
5.5.4 设置min_gram和max_gram 129
; a/ b9 h0 h+ N* ]) K
* N1 U# g F; t1 A# I% D5.5.5 侧边N元语法过滤器 1292 o) o4 b& O# x! w. X1 U( b- @
! W6 H- y* v+ [
5.5.6 N元语法的设置 1307 ?2 @. V: [9 S: N# y2 c$ F7 Q; i
" G/ p' V: b2 A6 ^( R: \" U `. v2 G( c
5.5.7 滑动窗口分词过滤器 131
4 C2 ?6 q V. D8 o8 c4 f# j* m3 P6 o5 ~6 B
5.6 提取词干 132
R+ E3 Z& L1 Z( x- b9 |* [, o+ T! d5 u' [
5.6.1 算法提取词干 133. Q+ [1 w. U' ]% u! q
; R( s- S+ c0 C7 U5.6.2 使用字典提取词干 133$ t0 f* W; f M* c% X" b& ]
2 I2 ?+ a, p5 S s. W4 P( Q5.6.3 重写分词过滤器的词干提取 134* U1 t2 r1 d6 _- b
! Y& ]# ~2 b% c5.7 小结 134
9 s6 V4 |, T3 d7 Q) u' m
% \! ]& W2 _6 R第6章 使用相关性进行搜索 136
8 r: D2 L. j& `) F5 b& @! x9 D" d3 w [& ?
6.1 Elasticsearch的打分机制 137+ F* [+ w2 h j- E1 Q4 q2 g, E/ L
) }. |- G- {5 x. P2 v
6.1.1 文档打分是如何运作的 137, k( H8 f' B: Q# k1 [
# C1 g' U7 x4 }% h: X( `3 C
6.1.2 词频 137; f8 `7 F# E% H! e' E% {# q9 H
& E& n: m' ~8 R, n. o1 A4 b6.1.3 逆文档频率 1387 X# z6 @( J. L6 T. {* o9 Q
6 Y5 x q% T* f/ `; v6.1.4 Lucene评分公式 138
) E" B7 o) ^6 O/ W `; M
* W% e% l! G1 \2 `, E$ x9 L6.2 其他打分方法 139
, N8 B( \0 ~& {- b% g2 u
( d0 [3 ]( O/ m* J7 Y6.3 boosting 1419 _! L& }8 h; ?+ a' R
8 m0 R; V) l( `9 ], f6.3.1 索引期间的boosting 142
( H1 r7 v% W% S' S
. O- E! P% S" I( r3 {6.3.2 查询期间的boosting 142
3 ?; x: p/ T& b' @ `! ^* c0 ~& M8 m% \+ ?0 ?! \
6.3.3 跨越多个字段的查询 143
+ R# E* x; m) a- M4 H# e3 }1 `% a; {5 k2 I: Y
6.4 使用“解释”来理解文档是如何被评分的 144 _- c2 J* i1 O; b6 ?1 v) m1 x
- l: ~" Z: f+ \6.5 使用查询再打分来减小评分操作的性能影响 147! x2 e$ v- ?- y- b
2 G C" T" B: T7 `) i
6.6 使用function_score来定制得分 148
, I3 h% P. `% L8 e% t
# _0 p3 I/ M3 j' J) M/ n- g4 G [6.6.1 weight函数 149
" j/ k. p |: ~( X
+ E1 j! n4 U& h8 V( I4 L0 h4 S+ x, O6.6.2 合并得分 150/ o( _0 ~5 P( [" j
' n4 k9 P8 w; O6.6.3 field_value_factor函数 151
/ ?' J% W6 o! ^1 \8 \1 p2 e' H& o
( j9 U0 J) B- A8 K6.6.4 脚本 152
% b0 B+ F6 n( p/ k
3 b2 `: ?$ z& Q% X9 `6.6.5 随机 152( i" F# s, q- y5 ?/ Z
+ P% L4 z" H! N! \" G6 D7 d
6.6.6 衰减函数 153
% _/ P- S- ~- Y2 q4 e
0 ]$ m2 T% a6 D6 g6.6.7 配置选项 155
% a6 m4 F( K8 B0 A* Y! X1 q/ B5 M
6.7 尝试一起使用它们吧 156
3 B% _, F8 I$ j6 l. @; N2 A: I' y/ d
% d. d L* b. n7 e$ F" Z8 x4 ^" `# i6.8 使用脚本来排序 157
9 q$ f7 R5 M$ g( \ H6 N' Z! S/ C/ P, h% u
6.9 字段数据 158
6 D8 G1 F5 j/ u; n1 i
4 V: D% _/ W G: r4 R* w. R6.9.1 字段数据缓存 158$ X' F1 X: U {* L: M0 X2 m, J' P
5 h1 o7 p% i3 t+ ^( F* m6.9.2 字段数据用在哪里 159" N/ m0 b' l, h
* {2 \% e ]+ M- D
6.9.3 管理字段数据 1602 C* _2 ~3 ]3 Y# H" H
! t. ]. E7 E6 B/ I4 I6.10 小结 163/ j, H+ k4 X+ f% l; b
8 D6 h' ]( o5 `第7章 使用聚集来探索数据 164
6 k [1 W: \0 Z3 J0 Z7 i
" n5 |( @" @2 N% e7.1 理解聚集的具体结构 166
7 \7 H: C5 l( k2 G( u3 F
! v. j: H! @4 G; b9 K7.1.1 理解聚集请求的结构 166! k! L3 k5 C8 @" H0 G% x5 g
- p& x4 L4 H' U7.1.2 运行在查询结果上的聚集 168+ d! A0 p8 P1 V+ u* Y& X: p
/ X& W8 j F& K. t; A0 `7.1.3 过滤器和聚集 169
: ]" z# y6 k* E5 h1 s) w- C' I" _4 W+ N3 O" x
7.2 度量聚集 170
6 ^1 B8 J7 d8 Z: O3 f0 q
8 H, U6 H( G& \# Q7.2.1 统计数据 171
8 Q3 G4 K& K( b4 h: P% ~
6 e2 k; Y2 J% P. C! x: `4 I- w7.2.2 高级统计 172; d( X! W) W3 Z( {/ }
; E/ A8 Z0 w. Z O" {# m7.2.3 近似统计 173$ `0 G8 e* Y; r4 F' [. |
7 F% W* V: U/ P/ e Y2 X1 p z" } l7.3 多桶型聚集 176* B7 b B3 \. w7 R0 ] A
6 s1 g; w2 F4 m- J& D
7.3.1 terms聚集 177
: l' X3 N; q3 K: r" [& E% K; x, a3 w, O& X1 G }
7.3.2 range聚集 183
& e( x1 |" r+ x2 ~8 A' g: E! m6 u* k$ g
$ {% y$ W; C5 ]7.3.3 histogram聚集 185
$ E) r! E4 R) ^, y1 `# N) z5 |
0 I2 ~$ W F U7.4 嵌套聚集 187# G8 n4 g: H( M1 T& G& T
6 @ e- C* \* Y7.4.1 嵌套多桶聚集 189# ]0 p6 k$ F* P4 Q0 o- E
- s M" N {& W
7.4.2 通过嵌套聚集获得结果分组 190! N' V; c% i [1 ]0 Q, c
& w/ G9 M4 l% O- [3 c: E
7.4.3 使用单桶聚集 192& r3 ?. r0 q3 j8 c; B7 Y9 X$ U
* Q: t& V. Z# r# r/ B* c. B
7.5 小结 196
' e+ y! R3 Y- H3 ?
) t5 B! s q' C! M第8章 文档间的关系 197 W% a5 s# L/ n: @
! ^# _+ V7 Y, W a
8.1 定义文档间关系的选项概览 197
3 K: A( z# S- H0 C2 m0 M. m8 {) {2 D0 E* C6 V+ _
8.1.1 对象类型 198" ?) B6 L2 H2 a8 M9 Z0 o8 h
T5 ]; L3 Q1 D' m$ u- V8 d
8.1.2 嵌套类型 200" ~/ f, P# y. [! s
6 _& b3 ], p5 D' g' _& j8 w# S
8.1.3 父子关系 200
$ d" I, v& M% j# L b9 P
2 P% T. `( s }8.1.4 反规范化 200$ w N4 W6 G1 ]- H% w% D: w# x
- P! }4 m4 Z/ j9 G5 J8.2 将对象作为字段值 202) U( e. @) F+ P; Z! B
' l. {/ d. u5 R
8.2.1 映射和索引对象 2032 Y- f! j- p8 [" N! [. o- f
/ s3 b% s' A- Y8.2.2 在对象中搜索 204$ b3 J! j G) c2 X
! A! h8 X( h w( s8.3 嵌套类型:联结嵌套的文档 206( |! T) `0 @, C, X
- H8 A: ~8 @3 G2 B" u, v: k/ X8.3.1 映射并索引嵌套文档 207
; o, F8 |9 S; B$ y3 Q2 K2 y& O% b# m8 W, z9 q7 w: ]
8.3.2 搜索和聚集嵌套文档 2100 M$ M# [5 q. h W6 Q4 Y8 r
$ \! w, M9 v9 Y# h* K' Q E* f8.4 父子关系:关联分隔的文档 216. q% E6 }. r3 J. K
, s+ b0 H8 p% m, ]; N0 d0 J1 f
8.4.1 子文档的索引、更新和删除 218( L! B: J2 |* r5 \
# G. m' m" k% S
8.4.2 在父文档和子文档中搜索 220
7 V7 }, x1 N- z
% F! x7 A0 @3 i7 G8.5 反规范化:使用冗余的数据管理 227
! M7 e- j, a7 N% B
( J+ P% q i9 L9 y2 |3 Y( Q8.5.1 反规范化的使用案例 228
# }; ]) z+ _& y7 `) i; C$ b' H6 l* k( |- n( d. j& l2 m. \5 P; u
8.5.2 索引、更新和删除反规范化的数据 2302 E# g$ ^; y0 T! v$ G( t. E1 t: Z9 a
( y# `0 E/ O; c8 L* O
8.5.3 查询反规范化的数据 233
: d7 p# R' ?$ h' y) p6 m
9 i$ f" i, s1 Z" Y' D9 \: K, }8.6 应用端的连接 234) D' x5 j- j4 I: f- T* d# ?5 E3 ]
2 I+ p3 N" r9 A8.7 小结 235
' }1 h" }! q4 d& a5 L$ C5 \0 x; i3 B7 L( o! G
第二部分
8 W5 a7 ~/ Y8 d2 c% k/ }) k
9 k7 T! v+ H, T# X0 V. H Q+ ~第9章 向外扩展 238
% E/ N# Q; T4 u+ u
' p1 F9 n/ S0 j A" V4 k0 Q# r9.1 向Elasticsearch集群加入节点 238
, I& Z7 @! [1 k
6 V8 I k! S/ O) Y% Z3 n9.2 发现其他Elasticsearch节点 2413 J/ G* P$ H0 d$ }0 @7 s! U
, g2 U4 R5 ~7 \5 @* ^9.2.1 通过广播来发现 241
' A c+ |+ J7 m4 x4 I" {2 p/ |
) ~ V. Q l6 m% L8 Z9.2.2 通过单播来发现 242
1 {: M4 s- U$ N V3 E5 d/ R5 T7 V4 U6 D7 w4 e
9.2.3 选举主节点和识别错误 2436 [' ?/ H( K- V; Z: ^) j0 e
3 s! n* @* I. b0 l9.2.4 错误的识别 244
9 D- U- s. [! T
6 o( U9 W, ?9 H$ L9.3 删除集群中的节点 2459 v' o4 `. N& A c
4 R; `# T1 x9 L, T1 G( p0 g
9.4 升级Elasticsearch的节点 250
5 ^; y3 L, R5 r8 E8 N5 r: G! `* h" h1 u! [2 f9 P1 @/ d
9.4.1 进行轮流重启 2506 s- J0 {8 R0 g4 Z" o8 m) j0 J
, ?3 k- T# T$ E- W& b9.4.2 最小化重启后的恢复时间 251" N" j2 ~, [2 e b+ t8 M
: h9 Z9 D5 C" o2 S9 e9 l9.5 使用_cat API 252
0 O, }) w7 Y! I- y! Y5 Q# J& U8 b; @* \# T. b/ V: ~0 f( ?# @
9.6 扩展策略 254
6 {0 f( t5 t8 h) z( p1 m" H4 ?1 s! |" w% L; k% J0 V9 s
9.6.1 过度分片 254! J( q5 w" h. \/ L8 F5 q" {
1 f% [8 t+ s0 b7 u* O# H9.6.2 将数据切分为索引和分片 255: S7 M# n- _# Y% A: S
. Y' l1 s0 M$ _9 j. i8 t9.6.3 最大化吞吐量 2565 U, C7 @" ^: u) W$ B4 J1 w
& d, |5 H$ V" s }6 t" A: ~- s
9.7 别名 257
) v" S4 h* ]) A% w+ v& I
( R( ]' R2 Z; V9.7.1 什么是别名 258
; _( S; F8 C" ^! ?. t; ~, U/ D
9.7.2 别名的创建 259. Y/ P4 H7 ]' K7 ?/ I; X
1 r* `0 Q% ^. U% ]5 ^( W' X2 w
9.8 路由 2619 j% A, i$ t6 b6 {
* _0 Z ~% c* B: W* g5 `0 M1 Y
9.8.1 为什么使用路由 261
@: V( j0 Z6 b Z1 _ }* E" b+ F+ i# x& f3 K% n/ w; ` a' N
9.8.2 路由策略 262
/ w" i$ ~! r6 |: ~, S' f1 s9 d" q/ K+ ]+ ^ g5 y
9.8.3 使用_search_shards API来决定搜索在哪里执行 263
- M& Q! ~8 E/ e3 T- L3 B1 z
: u* m7 w/ Y. l, s* B: f4 i& B/ Z9.8.4 配置路由 265
3 D+ W* A* r M
' o% D0 S: ?. i T: x" w% j9.8.5 结合路由和别名 265
4 @1 |4 j. v) I. v# p! ` S A) `% R3 B, j. w7 F
9.9 小结 267
7 g6 r6 C+ ^: Y! e7 o$ h+ r4 L. X7 u/ Z* y; k
第10章 提升性能 268: u: s+ }) x8 g7 R2 z' o
' T7 }8 i; _1 w5 u9 s, c10.1 合并请求 269/ O2 `2 H+ w0 {6 N: H
# c+ G/ {# o9 |- ?$ U6 W: @ U1 M10.1.1 批量索引、更新和 删除 269
* V, ]3 [& x0 U5 Y& W9 j1 D! M& J2 L+ L7 G. S
10.1.2 多条搜索和多条获取 API接口 273
5 ~# u+ u( l2 I7 V, X$ p# Q P- J0 J9 h; a/ z) n
10.2 优化Lucene分段的 处理 276
% J+ |: g/ u* ^% Z; A" E1 F" X% u; X
10.2.1 刷新和冲刷的阈值 276
5 k3 j7 v3 c6 z9 n/ C( c! B# B {) y
10.2.2 合并以及合并策略 279
0 M# ]* W/ g5 _7 }2 J
/ S7 @% U, C9 x: P7 {10.2.3 存储和存储限流 2822 p z' O; m, i8 o, i7 f
' r& [+ C3 c6 C' {( V8 d G. i' m10.3 充分利用缓存 285( b/ m2 ]9 C# ^
4 Z) x- J* J* L0 }1 Z _/ y& H+ ]10.3.1 过滤器和过滤器 缓存 285
, V& _! m2 A9 [3 y! |: r
8 c7 @( i' T1 r6 \. T- {) B10.3.2 分片查询缓存 291( L" E5 J; d/ i% N( p0 ]
. v$ Y- y0 z0 h% M7 W! C
10.3.3 JVM堆和操作系统 缓存 293* X- y# ~ x+ T. y. {9 V
( E4 C* N- t% r
10.3.4 使用预热器让缓存 热身 296( }8 v% r9 [ l
$ s' X4 z- w( {; U8 i) M6 a6 F7 l0 @10.4 其他的性能权衡 297* u1 b) k7 E6 O* A2 i
+ E9 g7 \; b1 u6 ~10.4.1 大规模的索引还是 昂贵的搜索 298
1 o. n% S' |& ^- B5 d: N9 i; a
3 J, C: s, g- S- d& `& p10.4.2 调优脚本,要么 别用它 301
, Z5 Z9 N" X! c$ d+ I
) i& [) W0 G0 B10.4.3 权衡网络开销,更少的 数据和更好的分布式 得分 305, T% H& B) V+ ~
7 S. g& ?9 L- |# p
10.4.4 权衡内存,进行深度 分页 308( S m, t0 I* v) p" ]8 Q3 z
( G: U, ^3 ?/ p, T1 z" F2 p
10.5 小结 310 V* K2 v9 ^( h. k/ [ \
8 y- P/ M# Y2 d: D5 Q' H! J第11章 管理集群 311
* i4 }3 M `7 q2 p; b0 y7 |! f; i1 N; ~: `
11.1 改善默认的配置 311
4 `8 M& e/ |% A% t) N, F( j* t) }, C- V; d' t$ H$ W2 `
11.1.1 索引模板 312
: M3 x+ M7 R3 ~
' |4 P# D% m6 o* X7 g& x( B( U11.1.2 默认的映射 315javazx.com( s, Z) a/ ~6 @
( l, ~8 t% F# o+ h3 R1 T" q
11.2 分配的感知 3180 S6 y- g* ?8 P% a' P! `
- n8 l" N7 T% `% S J11.2.1 基于分片的分配 318
; G( P% e& l" u/ V! e/ g5 S9 ~/ y* S! n2 c4 `5 V7 L
11.2.2 强制性的分配感知 319: X( Q6 \0 u9 {9 L4 C! T; u
4 F( F1 E% k1 U/ N; G+ b11.3 监控瓶颈 320' L5 o7 l' t, Q% t
5 q$ M: f( _( n8 T# N% g+ @/ _
11.3.1 检查集群的健康 状态 320
. n) _4 @( E8 Q( Z5 K& e( `- c" o5 h9 L& q1 n+ }! d S* ]& G) Z+ M
11.3.2 CPU:慢日志、热线程和 线程池 322
+ c; v, E" P+ s8 ?: ^* e9 F
: O1 X; b9 d) k! I& T' i1 i11.3.3 内存:堆的大小、字段和 过滤器缓存 326
- }" }. M* @; E1 n* [5 {% _8 g+ i' T
11.3.4 操作系统缓存 3308 B. X$ k' y) e D. x( `5 n
) W. {! L1 _9 X7 H) e, R% ]
11.3.5 存储限流 330
1 {5 m$ X% G2 {: F- b6 T2 `& ~9 E: r4 K
11.4 备份你的数据 331
" J% [( u" @7 s; u& t# a2 q4 V; l. a+ P* {# l7 R. H) T a& @
11.4.1 快照API 3318 W' t% q7 _. N1 w
5 K3 I! s- e2 c$ P9 Y: Y11.4.2 将数据备份到共享的文件系统 332
# R. k, J0 { O' a W7 j9 \( T# S( d: O! m7 u
11.4.3 从备份中恢复 3355 w; {0 t9 I; ]. J1 `9 T
$ z4 c* v* v- B9 Y2 m1 g; E
11.4.4 使用资料库插件 336
9 w; \* V3 w2 E( Z
3 `7 k$ U9 k, H* t. H6 I% ]11.5 小结 3376 v4 s; L2 z. c0 y: w9 f; b
( G" U7 a+ L$ Q; j+ t
附录A 处理地理空间的数据(网上下载)
! c+ l) W+ {' E' X1 o" [& j6 q* k; y$ b' c0 e
附录B 插件(网上下载)1 `( g( H$ Q' F! @. i% x) }* T
: S, o5 K0 Q/ n4 ]# v: G附录C 高亮(网上下载)
: Y. s) a" Y8 S. S* M% m" _) m2 d9 Z. O; L
附录D Elasticsearch的监控插件(网上下载)
0 y& R, E/ B* f; v; M' r$ O3 H9 J
附录E 使用渗滤器将搜索颠倒过来(网上下载)7 N. G6 e. R; V, T0 C& e! M
; S% c% i) a3 [1 V附录F 为自动完成和“您是指”功能使用建议器(网上下载)
/ {4 R2 G0 u( j* K4 z. O) ]' T3 y' H5 x) }, J: F
Java资料百度网盘下载地址链接(百度云):elasticsearch实战.pdf【密码回帖可见】
. @. d/ A2 V# P( ?% S& o0 O- Y7 i0 G v3 p7 G/ y
3 X8 }# `' G) g- @% i4 {
+ W2 b, A/ ?( [
/ W- I5 I0 x7 f/ d+ D3 r9 S: A$ r* S
. c- ]/ Z0 G; y2 Y& h
/ k+ t9 B; z3 K: ~. z. l+ I |
|