|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Elasticsearch实战》' J( p4 q, y h/ d1 m7 F2 _
java电子书推荐理由:本书主要展示如何使用Elasticsearch构建可扩展的搜索应用程序。书中覆盖了Elasticsearch的主要特性,从使用不同的分析器和查询类型进行相关性调优,到使用聚集功能进行实时性分析,还有地理空间搜索和文档过滤等更多吸引人的特性。 全书共分两个部分,*部分解释了核心特性,内容主要涉及Elasticsearch的介绍,数据的索引、更新和删除,数据的搜索,数据的分析,使用相关性进行搜索,使用聚集来探索数据,文档间的关系等;第二部分介绍每个特性工作的更多细节及其对性能和可扩展性的影响,以便对核心功能进行产品化,内容主要涉及水平扩展和性能提升等。此外,本书还有6个附录(网上下载),提供了读者应该知道的特性,展示了关于地理空间搜索和聚集,如何管理Elasticsearch插件,学习在搜索结果中如何高亮查询单词,在生产环境中用来协助管理Elasticsearch的第三方的监控工具有哪些,如何使用Percolator过滤为多个查询匹配少量文档,如何使用不同的建议器来实现自动完成的功能。
! A: @- [2 m$ t5 K1 @' Y2 f2 c* Q6 U+ G# ?
作者:[美] 拉杜·乔戈(Radu Gheorghe) 马修·李·欣曼(Matthew$ G) j D5 ]; ]8 g I5 @
出版社:人民邮电出版社2 R" C% J; B; W" y( E
出版时间:2018-10
. `/ r+ M" ^" ]: p; L* z书籍价格:79.00元+ U7 M# a: }- j* f
$ R+ E: L8 `/ F! n
N, u. K b) \! r+ q' G) z/ B' P. E! n7 P2 ]) w8 e+ ]
java电子书目录:! F8 }3 _9 R9 s: k7 f$ ?
第一部分
' a, E+ x( a- _* K' p1 e- O
0 a5 n& y5 x, L( H第1章 Elasticsearch介绍 2
0 F3 J) u/ b' ^5 g3 Z' v! E
! _: @% E+ ~8 S7 R. H1.1 用Elasticsearch解决搜索问题 3. z- I% A# U2 P' q3 v- y/ _1 B
: E5 J" a( e( m0 A& j, I/ I
1.1.1 提供快速查询 3
. c7 A) @- Z2 K, m0 h B! q& Q) S6 @# a
1.1.2 确保结果的相关性 4
- F t+ }1 U: b' q) b& b* ?: V: V' M- A
1.1.3 超越精确匹配 59 G: S7 F/ Z( {5 H- Z4 y3 ^4 g* j6 d
+ V: C, z- j" p
1.2 探索典型的Elasticsearch使用案例 6* N* A8 ~0 S# a
& F, t7 d$ J0 O- R8 \; C
1.2.1 将Elasticsearch作为主要的后端系统 71 w! I, k4 z; { x) h+ e0 L% Z
+ y, H5 X$ c( t3 ]) U; I4 U1.2.2 将Elasticsearch添加到现有的系统 75 H [: V: F% Z7 U- t- a2 ^) S
% b0 J2 f' b& N# \8 b1.2.3 将Elasticsearch和现有工具一同使用 8
+ X/ N' D4 `# L' Z+ u$ z$ W/ }/ w
1 Y4 g6 r/ E; w- _3 R1.2.4 Elasticsearch的主要特性 10
/ e' ]' H5 s; A' j' |2 D' ]. o* |
# j. z, F) Y: V9 ]" t+ k1.2.5 扩展Lucene的功能 10) O$ U! s% ^, a4 g, o3 X" _
# ?, `- o2 G7 m I+ E; F2 B6 ?0 l1 ?- {
1.2.6 在Elasticsearch中组织数据 12
( n3 S' ?: e; H2 \* h d! ?* ^' N& l0 F) u, ^
1.2.7 安装Java语言 12; S! C& }9 E, a' N
8 I. `) g; y3 {1 N1.2.8 下载并启动Elasticsearch 13
! N( {+ \- h l4 f5 z% f- [
, e) [% q% k+ z1.2.9 验证是否工作 145 B8 m* I g7 M1 C, Q' G) ]
0 p4 |% ]2 X4 G$ M
1.3 小结 16
& L4 h+ K0 M2 a' J J
: n5 b% e5 n8 L7 b第2章 深入功能 17' T" i$ Z' J k( G" B
, Q" ^. _$ C9 R7 ?2.1 理解逻辑设计:文档、类型和索引 182 u {, A- @) f, }' S4 ^" P
( C6 [ r& c1 l
2.1.1 文档 19. p' O* U( f) L8 L* m- D
1 C' j e1 e* R: @. m0 l2.1.2 类型 20* _* e8 L( q$ _4 Y- s& n) c
8 ]3 t0 ?( f4 V4 P1 Z- N
2.1.3 索引 21
* x# K4 n! s) F' G* i! s
9 _# Y0 ~4 @1 h$ `; I, y2.2 理解物理设计:节点和分片 21
5 I; e8 y7 v; y n6 `$ L3 x, }4 d& Y4 E( c' D# I
2.2.1 创建拥有一个或多个节点的集群 22/ n. U0 u5 _. v3 F# T0 t# U z
" K4 O/ @. m7 y; @7 f5 y2.2.2 理解主分片和副本分片 23
" L4 C0 e' _- |3 P G* J) P
# q) ~4 n! p9 E( K1 _) D+ ]2.2.3 在集群中分发分片 25
' E- U" H1 `9 t6 T" n. j: J
0 l. y9 D3 j7 V# r0 _4 I+ _* S& N2.2.4 分布式索引和搜索 26
7 f+ Y' g# l. _6 A! c
5 n+ N: D4 \6 L" X' u2.3 索引新数据 27' q% Y, b$ N* T7 @# ~: t' a
) M4 j4 o a! [" C* K! |' z# s& j2.3.1 通过cURL索引一篇文档 28
! ~1 r; Z& V' o* p8 Q( |! V* I7 p, { _$ `6 a
2.3.2 创建索引和映射类型 30
5 S$ ^8 u+ {/ |9 a$ x0 u
3 c2 Y" D/ U0 K" Y' I" A$ p# i2 F2.3.3 通过代码样例索引文档 31" s& C# u) ?) @# c, M3 ?
7 F: k7 b% p3 h" A% Z; ]" Q) b) B# S1 x
2.4 搜索并获取数据 32
8 s- {1 e3 r% F+ c. I+ P$ j
7 m% \" P" x& A, l; Y/ t4 [9 Q2.4.1 在哪里搜索 33; l3 h r0 c4 }$ X! v; M) ]" u
: m6 u* j9 a$ y8 [, h2.4.2 回复的内容 33( R0 r2 o+ O D. N/ |# W5 J
; J7 f6 b* X: t7 @+ P
2.4.3 如何搜索 36
( ?" Q- B8 [0 f" o9 ^$ p
* @: z# h6 V" [/ n2.4.4 通过ID获取文档 39
% S8 F6 d# Z: I8 p0 d: g& J8 i& `5 |* \1 P8 e4 A
2.5 配置Elasticsearch 40
! I, ?* v; W4 f" @2 `& R7 j: S( i; G
2.5.1 在elasticsearch.yml中指定集群的名称 40$ p" H( t$ `* d$ e8 {
( b( a: L9 e: F& O* e
2.5.2 通过logging.yml指定详细日志记录 41
0 N' i% U5 d4 e7 N5 N* z4 V
/ Q+ f; q; c$ ~/ G. e2.5.3 调整JVM设置 41, K6 L3 X$ F3 O2 r9 L
; q- B! A( U- k6 C' T0 a
2.6 在集群中加入节点 420 g# k0 n g, f2 j* k0 B
$ G4 e" G6 D; x
2.6.1 启动第二个节点 43) C# w; V5 U9 c" Z7 ?
/ U/ Q [% ]5 |2.6.2 增加额外的节点 448 d: O. Y+ |/ ^2 b5 G1 B! \" J) H
, v/ V9 | m- Q' G& g- C, y2.7 小结 45
2 ^+ \- r: u( H! u+ _6 b0 V' X- V5 w: b- n: ^
第3章 索引、更新和删除数据 47
1 A3 D% `6 _5 }. b0 M2 U$ C4 w
- `( s7 ?% w' T& R A9 t4 R, s3.1 使用映射来定义各种文档 48
) j3 e k6 M2 f$ I6 `2 j4 |* f/ `& A( z# T; e
3.1.1 检索和定义映射 49' l" i& A3 p8 r9 Q! _6 A) d, `
4 W- Y4 ?2 {- {' d4 |3.1.2 扩展现有的映射 50$ Y! v9 o) y; r# ~7 l
* e7 j2 w0 O( n% K2 m1 s
3.2 用于定义文档字段的核心类型 51- }4 k# R* w. K$ u% u/ k; b
0 k' M7 C& o6 @- L+ J5 T3.2.1 字符串类型 52
4 N8 _1 q$ l' o1 K& a# q
. c/ x8 ?) ~1 X8 a3.2.2 数值类型 54* _& Z! O3 Y: }# ]
2 b/ N& d/ \2 R
3.2.3 日期类型 55
3 W9 B* g7 U$ k6 r8 k# i
/ l. d: k/ G4 }3 X2 b; D1 ^0 f3.2.4 布尔类型 56
" L" R k( d t. l6 C
& L5 Q: Q4 M, k3.3 数组和多字段 56! W' |2 o2 L: T
0 f) ^. U+ Y* y' N- ]- H3.3.1 数组 56* @" _4 y( u& ~
9 B3 i7 f- C, @5 o) |6 \
3.3.2 多字段 57
" `! h9 C8 r/ Q; H% m' x- v5 [8 }1 H \; q6 J2 u; {
3.4 使用预定义字段 58; K5 s- \( k" ~+ X+ d' T
0 X* x. g& ~! ]6 ^7 j# V
3.4.1 控制如何存储和搜索文档 59
; e- q. x, `% k" _0 P" |4 Q p5 a1 C9 n# D* M; t6 x
3.4.2 识别文档 61
1 G2 x$ [' X6 h0 X' k* W+ D" O
+ o4 N% S+ O. l( I' Z/ N& c3.5 更新现有文档 63: X/ J( M2 f# P3 m: r! [
; A% y7 ]) O3 @$ M0 w8 L& y
3.5.1 使用更新API 64
3 H, s8 Q# Y$ {1 s- n* o9 `
2 f. n- I7 T: }: v$ Y8 z% O: i3.5.2 通过版本来实现并发控制 664 y K5 j! h0 ~; P5 I- H
( s/ c) B" n" s1 k; [; G8 Y& X: O3.6 删除数据 69/ e" Z5 g% P" o
* T3 d6 Z! L3 b
3.6.1 删除文档 704 A* O: E$ R0 B& ]8 l' x
, M! u6 N- P' c ^8 g6 n8 i6 c3.6.2 删除索引 71
$ M+ Z7 \4 W1 T0 D1 X: k' N6 C H: S
) |7 u6 \, G9 u/ s3.6.3 关闭索引 72
* U6 J; s6 c, O4 q* l# }5 C' `$ ` {- w8 e8 z
3.6.4 重新索引样本文档 73- I8 ~' W9 o8 s1 Q
2 E6 o* _+ c' i8 B
3.7 小结 73; G5 `( P: D' ?! z; P' U! j) ]$ |
3 ^/ M/ b' i5 d4 a第4章 搜索数据 74- s: o5 c' {' {8 ]6 a; F
* d, S+ l2 t: @% K S8 e4.1 搜索请求的结构 753 E) B, w" Q# v' S* F
' @ h* M" h! Q3 Z2 T7 f8 S4.1.1 确定搜索范围 75, ^3 c' K* V, R% s \
3 I7 K2 g: j+ G3 C) X9 X4.1.2 搜索请求的基本模块 76
4 u( C! }6 x0 O; V0 I7 H$ s3 j: ~1 p' P
4.1.3 基于请求主体的搜索请求 78
1 ]! e1 c; P5 C5 ^- H, T% L) \5 n
9 O& H3 G- ?8 F9 s/ ~2 F9 |4.1.4 理解回复的结构 81
7 q4 `/ g; r* r1 C1 u3 Z5 B* r. Y; V7 d8 [9 Q ]$ j
4.2 介绍查询和过滤器DSL 82
! q" ]: E/ z) T1 t' A* C" U7 k4 E: \, T( j6 J! E
4.2.1 match查询和term过滤器 82
/ Z. o( W/ S% h. o3 x5 P* ]* y
" m; j @: o/ y0 p1 i4.2.2 常用的基础查询和过滤器 85
% ^: V9 n$ ]& s9 Q0 F( n: g5 }% J* |
4.2.3 match查询和term过滤器 91' s. o0 W7 H4 h6 J: P. \" ?5 {& b
) }$ T7 @: B3 a' J9 d6 k
4.2.4 phrase_prefix查询 92# v5 E& w# j1 K2 {% @8 c. A
; f' p# _0 y' c
4.3 组合查询或复合查询 93
8 R! K: x* _' Y/ M6 W5 M+ R( d0 v( X+ S6 w- }$ j5 c
4.3.1 bool查询 93( V: E% x# i1 W
& J5 t) N- W4 N2 r
4.3.2 bool过滤器 96; v/ r) s3 G4 U& O" [; X) F
, L$ \4 G" X1 b$ W/ w. q4.4 超越match和过滤器查询 98
J" H* \/ z0 z0 a" n X1 Z. K# R9 p* O! b \) d
4.4.1 range查询和过滤器 98
( C2 K l; b/ _6 H" O
! x; A2 v& J% [9 m) T0 n4.4.2 prefix查询和过滤器 99
: U i# Z4 _ P# y) y
( z, ~( q/ J" R- h; Z" @: W, t4.4.3 wildcard查询 100* \) E! f( m5 s& C8 s
) v8 _. Y2 ]2 j1 }. |, b& c! l O4.5 使用过滤器查询字段的存在性 102
) M5 q% [) s5 u4 Q* S' ~; s! v
# L0 n Z3 \& X [4.5.1 exists过滤器 102
# D, [+ O; S* H* m+ S; _/ w: d: m7 T3 ?6 g- E9 D
4.5.2 missing过滤器 102
0 T$ X& C2 [7 Q& V& V5 z. T2 r) _8 E+ v
4.5.3 将任何查询转变为过滤器 103; U+ E! e$ [0 r' b( Q
! F' T t) D0 ^7 X4.6 为任务选择最好的查询 104
$ e! _, v4 K) l# ?$ V. R, r! G$ K$ J1 S* O! n& Q! ^ `9 K/ ?
4.7 小结 105
# W/ G. {4 G& [4 h+ o& ~' O3 z( c9 P( ?1 H
第5章 分析数据 106/ f2 a+ @ X/ o8 z4 T. O8 |4 [% H9 D
# J5 V: L L/ |+ W4 H: b$ S
5.1 什么是分析 106
1 D8 G/ e4 F( ^( O g
% r0 }$ G9 w8 N( X' U5.1.1 字符过滤 107 u8 m1 a% u/ b; }8 }% j- b1 |
! D1 e( Y: a; K7 F2 V: S# d
5.1.2 切分为分词 108 T2 x8 f- x) E I
& Q) ?$ ^. X6 ~1 V7 x/ v7 o
5.1.3 分词过滤器 108
8 x# Y. Z1 M" \6 M' C2 L! G+ l0 C1 O) G! }3 e/ s
5.1.4 分词索引 108
: a/ S$ J4 ^/ @; c5 J6 T+ Q+ {$ W/ `) F% ~( p
5.2 为文档使用分析器 109, I6 w1 k7 S+ U, a* g- \+ X
3 }2 ~0 q& T8 Y. l1 V5.2.1 在索引创建时增加分析器 1097 P K! j" b2 c' k% B
+ q. @3 k; U; f2 [1 L% I. k/ z5.2.2 在Elasticsearch的配置中添加分析器 111
* K, g b8 |3 o: q
2 P+ O, Z, @$ Y' @5.2.3 在映射中指定某个字段的分析器 112
% x- m. G% U! J% ?1 I/ O v# m' E# u; `
5.3 使用分析API来分析文本 1130 W+ T# y) B5 b3 Y. P
# t V H3 R5 S1 f& d; @7 F
5.3.1 选择一个分析器 114
) p+ t7 ~1 C; Z8 n- l- l4 e7 `
$ e1 j d! }& Z4 Q% e5.3.2 通过组合即兴地创建分析器 115/ ~. _3 X: T G) M5 Z
$ l$ ]! {+ m8 z0 m4 h) x% O) J# w' t
5.3.3 基于某个字段映射的分析 1153 q0 \& `, u/ j
# r8 a f: ~5 u7 u2 ^5.3.4 使用词条向量API来学习索引词条 1168 f9 @9 s: k: c4 J) Z" D, Z
; O U/ j) m& Y5 V
5.4 分析器、分词器和分词过滤器 1173 v5 u, u7 N5 F4 }4 n- h
0 G" f2 f2 ~ J. N! D+ s2 }
5.4.1 内置的分析器 1171 _/ B+ c& e5 P! c( C
9 t( j( q/ C3 `. R6 y
5.4.2 分词器 119
# A7 r0 C+ C' k2 F1 v9 O+ [, d( H
1 x. X% U) i, e1 `* O/ S1 i5.4.3 分词过滤器 122
; t' p% T! x9 i# f7 L& T0 c$ x0 e, ?8 a$ l
5.5 N元语法、侧边N元语法和滑动窗口 128& D+ y+ k+ V6 `0 z
& k- D# m: k1 L% K' O1 f5.5.1 一元语法过滤器 1282 p1 y$ M/ m0 I! @; H
6 Z- M$ R' x( T; U0 S( v5.5.2 二元语法过滤器 129
* N! A: P5 i: y' E' Q
' {' u& T# ]% z. E* @( y* @5.5.3 三元语法过滤器 129
7 F( D! A) K' U8 Z# V
3 B0 M$ i" d1 n+ V+ _5.5.4 设置min_gram和max_gram 1293 ^7 E# w( T. X, {% p+ A( l
! Z6 L. p5 C1 F5.5.5 侧边N元语法过滤器 129( A8 I q" V5 N& L. P
/ _, B5 a- \( b. e' I Y- [
5.5.6 N元语法的设置 1309 [8 x7 p9 ] T( o; T6 m& F
9 `6 L0 t" a( [6 O5.5.7 滑动窗口分词过滤器 131
0 Y2 V% O3 W- P- q5 O. |3 |
1 h* N2 M, N- q8 ]5.6 提取词干 132
' X% i( F0 @+ l0 w* {& @7 X5 p: D% q5 y% {$ G7 y! q" K- [8 y9 B
5.6.1 算法提取词干 133
1 _# O/ h! w" J. B# l( H6 m4 S4 |8 u% }$ L
5.6.2 使用字典提取词干 133
0 U5 V' I0 f- X' r( H
3 ^1 H7 U0 ~( u; K. g: N, ^# m5.6.3 重写分词过滤器的词干提取 134
, s+ I% l& |$ e' [ G" ~2 Q6 k- W5 u; G, w
5.7 小结 134 [$ ~2 l' [2 m( I5 F
! C, Y s, ^% [$ [" C! X% n+ a8 W& |0 G第6章 使用相关性进行搜索 136" t8 X8 \) e$ I; Y* N- H/ S- b
; }9 z9 w {2 y9 x
6.1 Elasticsearch的打分机制 137
+ Z: o3 u+ u: ~! i5 e& ]5 B4 \* B- g
6.1.1 文档打分是如何运作的 1374 e7 }- A( a6 d3 D: D8 Y
! a3 B2 S/ X& Z/ e6.1.2 词频 137
6 N5 s6 [/ R+ b. S' w; @* h6 }" `2 ?- }; O2 C0 e
6.1.3 逆文档频率 138; m7 y0 X+ s# O" g
: l3 _: y; D/ @8 [8 n9 M( y$ ^6.1.4 Lucene评分公式 138" y# W" w- R' w
$ r" B* R$ ~( H! p; q' j8 v
6.2 其他打分方法 139
7 [- f0 l8 b0 p+ k* ^
. e# g$ D' H6 V0 r! @! k6.3 boosting 141
& F( `8 E5 p Z
, @7 d: s+ R$ O& F: S+ c. x6.3.1 索引期间的boosting 1420 k" A' f& {- I& E% V
5 _+ \! D" h& \; U6.3.2 查询期间的boosting 142
) d5 i) ~% d _
3 }7 m3 Y& t& u) }" U2 j" Z6.3.3 跨越多个字段的查询 143$ y# b+ O- u2 s7 d: P" G! n& F3 W
6 y1 C- I) o* t0 C/ f$ `2 L6.4 使用“解释”来理解文档是如何被评分的 144) \, s. Q/ o$ e; f
5 U z% y% j3 ?& E4 p4 ~8 }$ l6.5 使用查询再打分来减小评分操作的性能影响 147
& v, \" s$ G+ a/ D. M- j" X, A6 w. ?7 `* _$ e# e
6.6 使用function_score来定制得分 148 @( S" }2 ~5 G- k0 G
& T/ t! q2 d, ?3 u B6.6.1 weight函数 149
+ K' t7 Y9 r9 s- o; Q
6 V% m& k/ [" o0 C! n6.6.2 合并得分 150
' M0 p2 H- b! T
3 \) Y! P, e$ U4 I. l+ v2 U2 M6 ~6.6.3 field_value_factor函数 1517 r: w& f7 p8 V* v
8 E$ C( `8 k! B1 N5 D
6.6.4 脚本 152
: G# u) r4 @' o8 I
& o2 _; ?, V9 M# ?6 v* r% p. g6.6.5 随机 152
8 g r: f( n/ `# J' @8 r# D" [6 j3 V
6.6.6 衰减函数 153' d$ x3 ~1 d' u5 U* h
- e( J0 O" K6 d8 c
6.6.7 配置选项 155$ F( y% y3 W) p6 F+ K
/ O3 j( O6 H+ @9 t6.7 尝试一起使用它们吧 1565 h9 Z% k& g- I" w& z6 f
0 C5 W. l' F3 t( ^$ W! N" O
6.8 使用脚本来排序 157! q+ |; ? U1 W% j( W# u0 `0 n
: b/ |/ r/ S* l' B q
6.9 字段数据 158
8 x/ `+ e. M9 |) T0 J( _7 o6 A
' d! z) v! H! ]4 e2 m2 _4 J6.9.1 字段数据缓存 158
) c, q" Z" T: s1 k2 U" i0 q9 _- ^1 b8 ~( W# x& {7 T
6.9.2 字段数据用在哪里 1591 t4 E7 C0 C0 j. R0 p
( x1 n$ |8 ^7 N# O0 [6.9.3 管理字段数据 160. f8 O4 h1 I1 N( n' f7 y. E
# g, k+ U7 ~. Q4 U% `% |6.10 小结 1638 X. _1 Q6 L" ]' v" L; } h" `+ l
1 J, S2 n: H" Y5 {1 A) a第7章 使用聚集来探索数据 164
) g8 U& V) j" k8 r! z' N
) n: K- @0 y, {2 t" K; t7.1 理解聚集的具体结构 166
# p8 D! }' a/ ?* R, g
$ Z% U/ n' d7 }1 G- K e3 c7.1.1 理解聚集请求的结构 166
- I v k4 o# T h; `$ e' e4 J, G( {$ Z) p) S2 R
7.1.2 运行在查询结果上的聚集 168/ B) L b, g% T6 k( \' d( r, }
, z( {! h3 G- E" G7.1.3 过滤器和聚集 169
. ?, S. m0 U! ~# l& g
( q1 H; w% J* e) d5 G# T4 T7.2 度量聚集 170- Z ~7 _& D8 `9 p$ g' ^
& o$ v0 X1 q- H6 i+ g" }
7.2.1 统计数据 171! y% G6 `/ a8 h! j
3 O [% Q0 u ^8 n% D7.2.2 高级统计 1725 Q K+ C7 _9 }2 B# ]
6 ^, c) I5 u, P+ l6 B7.2.3 近似统计 173) z: y) Y4 b6 p$ H* Q* B
, ~' l; _/ i+ }) E5 K, M
7.3 多桶型聚集 176
S, @0 s3 u) \ D7 j0 R* ]+ n! c2 X
* k s2 Y% ]7 {, }* M9 \# j/ F6 d7.3.1 terms聚集 1770 e! O. G5 z7 y+ l
% ]( R8 x& w/ [) O4 Q% I7.3.2 range聚集 183- b5 F! d5 X M- O; h9 x* ]
6 J1 k: z7 V! ]9 N7.3.3 histogram聚集 1859 n3 s; o; i: J5 G1 @) ~
! o( N% @; y; m& ]) M6 y# ~7.4 嵌套聚集 187, G6 \; X5 d S, u# [
" @( N) l0 x' M8 W, y3 ^3 H7.4.1 嵌套多桶聚集 189& Q6 w8 `3 a* k7 B/ y+ J" I
. @$ P0 C% i- C) O, {/ S. g7.4.2 通过嵌套聚集获得结果分组 190' t$ C4 J W8 w: E: [
' g( \5 ]) R5 ]0 n/ v& H3 w
7.4.3 使用单桶聚集 1926 h3 o" R1 M; A2 X
) ?: t0 d) r, N7 }
7.5 小结 1969 G0 Z5 e- `8 J$ ]! _9 O
& n4 `0 n& l, m4 ]" B
第8章 文档间的关系 197
& o1 k; b% F4 x" C5 A, @
$ k, k0 Y! j; L: \5 \+ a7 `2 z p* T. J8.1 定义文档间关系的选项概览 197
0 x% e! x* h3 |6 }, i/ |% d" D2 {' V5 Z( w7 k+ ~. z" [
8.1.1 对象类型 198' ^+ X9 _ \) ?8 Y5 j* F8 V" T! j9 w
P V1 ]0 v6 T7 T& C8.1.2 嵌套类型 200, s% h0 f" f# i
+ y3 x) y1 d( A% C9 s" C& R, I% D
8.1.3 父子关系 200
9 N1 l n0 j0 R9 G: V% f+ C
6 K5 ^$ v% E; k2 R2 q8.1.4 反规范化 200 ^, J% q3 Z6 b6 o$ I
3 b7 R; |5 R% f8.2 将对象作为字段值 202
2 f) S! q' f* }6 W% u: C$ `) o
, t9 S! V+ M2 X* Y8.2.1 映射和索引对象 2038 p3 [6 _9 y0 v4 f
& n- }( f1 y# P7 ?5 A4 Z
8.2.2 在对象中搜索 2042 w5 L i7 {/ j* ?3 t
! H6 @% a1 |) G
8.3 嵌套类型:联结嵌套的文档 206' |: h+ x y- g+ L- c0 _( T ^
2 G R7 O3 L& j! _" B8.3.1 映射并索引嵌套文档 207
/ J1 U- [1 H1 Y' \$ c# O7 _$ @$ G. U/ k$ a* ^7 K
8.3.2 搜索和聚集嵌套文档 210
0 U3 {1 {, B+ K, r1 _
: p+ {; L @& S0 @8.4 父子关系:关联分隔的文档 216& O# M& U% t$ E" Z% [6 _$ @
* A: u' {, g8 [$ g! m4 a% R2 m8 Y, I! S8.4.1 子文档的索引、更新和删除 218( [. q( E8 ~' H( U
: A: l3 n1 f9 k4 A
8.4.2 在父文档和子文档中搜索 220
0 W, d# [7 Y5 s" C
; b% [8 M! ^( v9 Y, o6 d2 X4 I3 ?8.5 反规范化:使用冗余的数据管理 227+ p3 z7 k @$ {; y
& T/ s/ k+ Q/ P8.5.1 反规范化的使用案例 2285 H! J4 Z; T( q3 W ?
0 [1 B# a% C, w! l: u
8.5.2 索引、更新和删除反规范化的数据 2301 V2 _( T: Q1 o& g7 M4 e2 Z
% c ]$ ~$ r* e! J# \" T d" Y8 M0 \( P
8.5.3 查询反规范化的数据 233
) G6 p" u' M5 [* G( i& R ]& Y# r5 V2 w4 `, O7 }
8.6 应用端的连接 234
' s6 A' k5 w' |$ r1 H! I% u/ V1 u+ M F) P+ i- {9 w5 G
8.7 小结 235
7 k4 O) L/ {4 d; J4 M4 E8 `
% x; Z* Y/ d" ?( `; ~ x. d: |& r第二部分7 ~* g9 f; X6 ^' Q; K* Q) t
9 N4 i* z5 c/ E' A; p$ D% W
第9章 向外扩展 238: t! |! [4 |/ r* o* p
. T4 {! P* S# t8 {$ o9.1 向Elasticsearch集群加入节点 238( Q% E8 u& t; `+ L& k6 b
3 g" ]9 z" n( H# ?& f9 r3 [9.2 发现其他Elasticsearch节点 241
* t2 F& [( K5 f. t( w: s5 y' x3 T0 Q! J7 y
9.2.1 通过广播来发现 241$ _1 |, s5 r2 e/ g" [5 E
/ m, h9 K7 }& q' g; |8 [
9.2.2 通过单播来发现 242
3 ]5 W7 v* I6 G
2 r! e* }4 _) q9 c Y9.2.3 选举主节点和识别错误 2439 c3 A: A: j; c" Z6 \# o
$ `. d9 L$ X$ S9.2.4 错误的识别 244
2 y' \2 U: S3 y6 R: e: C0 M
: a7 C* r a$ E, A9.3 删除集群中的节点 2453 X O+ w) a6 F; L2 E, [$ Z, U
. g) F+ n& `' ]4 R, S5 ^/ S& g
9.4 升级Elasticsearch的节点 250
% ?0 U$ y A7 q1 F
1 t- p: r( u- u7 t$ d* x; R9.4.1 进行轮流重启 250. a6 H9 |3 M. M! Q$ p* d+ p r2 _
! U9 N/ s" A4 R C1 c+ m5 {, J9.4.2 最小化重启后的恢复时间 251" Z+ ^! p" y( _: j* x& W
9 V6 W) r0 `, |# y0 R! z
9.5 使用_cat API 252$ y8 S7 J& Z9 W# O" P* g/ p- }
- a0 |7 |& V+ v4 _7 }/ g* v& n9.6 扩展策略 254
0 J/ ~4 J0 ]9 N" K& h% Q. D8 I. c0 N- j
9.6.1 过度分片 254* [; t4 I; i2 R7 G0 ]3 E; E$ L/ [
! L' E) _8 F1 S, I, _9.6.2 将数据切分为索引和分片 255
7 p3 E I+ B+ g$ r! [2 H* I2 v! N. n& J( t. n
9.6.3 最大化吞吐量 256
; x! o) C5 M9 ^, x, A% |# t7 Q7 y* A3 g t) L& ~* U% ^# u
9.7 别名 257
$ W3 ^( n/ o, R/ |# b$ M
* v* m4 z: O8 d+ Y/ x9.7.1 什么是别名 2587 O& k! z* z6 ?+ U
$ o' v% Z) A# D( J( j% ^; N0 e9.7.2 别名的创建 259
+ T" U) ?' x+ i5 F U3 a
" M+ G7 v* g8 f9 d5 `% \9.8 路由 261% c8 a) q. d) {# b- Q* I/ y
G. }" ~ f. {+ W) I
9.8.1 为什么使用路由 261/ b4 X, D8 }5 ^0 J- [* p! b% u- @( F& h
1 C0 V7 D: Z, ~- o* Q! w" j0 }
9.8.2 路由策略 262
' ^$ s$ o9 I( u/ N: @! d$ i' J/ x' o+ S$ N- F% w
9.8.3 使用_search_shards API来决定搜索在哪里执行 263' T, M9 x8 x( G- n/ i6 G" K
) p# L% R" h+ ]+ _3 F
9.8.4 配置路由 265+ f% C- I$ ~" `9 Z0 W
L: V' f- k" @) V% j9.8.5 结合路由和别名 2655 F4 Y. J9 f+ Q0 B. d, z0 l9 \
, T+ u5 F {5 B0 P$ O, m- i. f6 K9.9 小结 267( n7 S$ a+ w' I5 [+ b
! |# Y8 R, j6 A: g
第10章 提升性能 268
) I; I5 i- t. W0 }' f+ z0 u- M6 ?" q8 { r% ~* w) R
10.1 合并请求 269, e6 D% k8 ^( r0 h
% j# m, A4 J) l% o" Q
10.1.1 批量索引、更新和 删除 2699 Q) l; F0 r4 q# v# |8 V& Z6 T
4 i, T- j5 y. c3 @ X$ o e. X10.1.2 多条搜索和多条获取 API接口 2731 A% r% H) I' O; m
, o4 J4 c. {+ o10.2 优化Lucene分段的 处理 2769 {6 A; \% b4 a! K1 e' _* P; ~5 f2 A) p
$ F5 Z# P4 C8 H( L* {" o
10.2.1 刷新和冲刷的阈值 276/ T$ X9 j2 i0 `8 [% `! X4 \, m- \# ]" O
' l/ F! d) f, ~3 }; F
10.2.2 合并以及合并策略 279. H( l6 i9 l* g) M7 H# U
. X* I/ C3 ?4 @10.2.3 存储和存储限流 282; c' s6 B" b# R5 Y- M6 f/ T
* ^: v; f# t2 O9 o3 O" ?6 r: A) a
10.3 充分利用缓存 285
0 Q( A& _* a9 }% X. R% u: W; I4 M* W- h% K, q" \6 N: J
10.3.1 过滤器和过滤器 缓存 285% m! \+ _5 B& C3 D
7 i. [. m; n- {* Q% D3 Y# B10.3.2 分片查询缓存 291
" e& L0 g/ |* m/ H; [
' ^$ Y: ^; q1 Q( @10.3.3 JVM堆和操作系统 缓存 293
- l! U! @! G6 Y, H% T/ ^- L0 ^% `" K2 c
10.3.4 使用预热器让缓存 热身 296. G# B. t- @( x: `
0 s, | [1 ^. {# M1 j4 [
10.4 其他的性能权衡 297- U* P4 y) n2 Q9 G) t: G& H
+ D+ P+ m8 U$ O, [6 @
10.4.1 大规模的索引还是 昂贵的搜索 298, H4 ]" T' ~* M1 X) ?% c- @. c
1 d: X0 f! J5 `
10.4.2 调优脚本,要么 别用它 301
! q9 M! W* W' E
! y+ d" ^ o. N. d, ^1 w5 @( \10.4.3 权衡网络开销,更少的 数据和更好的分布式 得分 305
7 @% g: E% t' e" _: ~+ t# i4 H3 F2 c" s3 ?( h
10.4.4 权衡内存,进行深度 分页 308
6 ?3 C7 g4 R* M$ [3 h7 b
4 ]. B- X: n/ \( [5 s- |: M10.5 小结 310/ h9 |8 \% C1 r& X: d3 M$ E
9 L* ? ~! e$ ~. U3 g" x @. v第11章 管理集群 311
~: p" w" v9 @8 v5 O
; r- z2 |) S" I2 p& L Z11.1 改善默认的配置 311
5 @* o* P, S0 W1 w& N1 T( j6 Y- }+ z: U
11.1.1 索引模板 312
7 V2 O! s: E6 S$ r8 k: L% s0 O" ^, F' u* I, f+ n1 x
11.1.2 默认的映射 315javazx.com( J) n5 P8 Y1 H4 \
) K1 Z5 d6 h: [4 [& t) V9 o
11.2 分配的感知 3188 p. [3 j2 R9 q6 X4 a9 J6 `
- \# y1 ]0 |. M
11.2.1 基于分片的分配 318
; [. r' I( {/ C! D: ?/ r0 A- l& F1 G ~( Z/ ^: o$ D
11.2.2 强制性的分配感知 319, `5 a# C6 [% K0 M( c
: \( T5 [8 t; A11.3 监控瓶颈 320
n8 H4 i, T v' F6 J! y- m4 D/ I" Y0 p9 R) g9 h
11.3.1 检查集群的健康 状态 3209 m. R7 ~4 b$ T" x
+ P6 B. T" V) D/ V, ]& n
11.3.2 CPU:慢日志、热线程和 线程池 322
; B6 ^# f8 K, o
. w7 F& P& U, E/ R; y11.3.3 内存:堆的大小、字段和 过滤器缓存 326
! `- z2 H7 w: z' y, T( W" m$ E" H F j3 Q. C+ x
11.3.4 操作系统缓存 330: n z% I% k2 s. P6 g
, j- N( g" W) a( K* J0 p4 y# x4 {7 J11.3.5 存储限流 330
8 j0 y! B& [) q+ ]' R/ J: M/ g& S0 x3 n) k6 ^2 v, y8 R3 @7 \ d
11.4 备份你的数据 331
. k% T7 n$ N1 E) ]2 z% ^. n4 g
( `5 U4 R3 s' ^+ t; `" Z11.4.1 快照API 331 [+ \/ \ F0 F- m0 C& k
3 X7 }2 f' h$ H) } e7 M3 j) N9 ]
11.4.2 将数据备份到共享的文件系统 332: ?# b7 ~7 g: i2 @/ g* O& l
% V1 q3 A6 _8 q$ ~5 H/ e11.4.3 从备份中恢复 335
) U! {( ]6 y$ Z; F3 o+ w$ ?3 r2 @5 B- i9 l2 q; ?! W/ @' ]
11.4.4 使用资料库插件 336
3 j( Y4 r4 H; p: x! I S8 E5 w+ P+ q
11.5 小结 337
6 u1 R# W1 \+ ~, l3 n
0 B, G7 ]0 u) {( b附录A 处理地理空间的数据(网上下载)
2 [: P; G" ?. U/ p R2 s. W+ l2 g% u4 b, p# b
附录B 插件(网上下载)3 @& Q% j+ a8 J I5 w. Y6 O
* a$ @' l7 T/ X附录C 高亮(网上下载)
# t* @6 |6 S1 o& l" T( ]* \/ [9 R3 \5 Q w" ^3 h) ?9 J$ o
附录D Elasticsearch的监控插件(网上下载) Y5 e, y* P8 H! E. V
8 `# ^. u! Z; c, S3 \* A4 X附录E 使用渗滤器将搜索颠倒过来(网上下载)& x3 B2 ~7 ^5 ~& F& k( T
) _, u, S/ g$ B1 ~5 i0 s( @- l# f附录F 为自动完成和“您是指”功能使用建议器(网上下载); ~( u4 k4 y2 D0 c, V
: B4 B/ E1 ^: X( A4 Q+ IJava资料百度网盘下载地址链接(百度云):elasticsearch实战.pdf【密码回帖可见】4 d2 e+ b, l6 f3 Y! ?6 u
$ M; [$ N3 x4 R5 V$ x7 W
# |% X# c. [6 |1 u6 o
. @ U2 t& c) X6 w6 N; o, K' u" e/ F
7 T5 x0 T8 n0 i. Z( J* T* o4 [, ]9 X7 `' W* s$ m
|
|