本書(shū)涵蓋了Elasticsearch的許多中高級(jí)功能,并介紹了緩存、ApacheLucene庫(kù)以及監(jiān)控等模塊的內(nèi)部運(yùn)作機(jī)制。其中,還涉及一些實(shí)用案例,比如配置Elasticsearch參數(shù)、使用監(jiān)控API等。
譯者序
作者簡(jiǎn)介
評(píng)審者簡(jiǎn)介
前言
第1章 Elasticsearch簡(jiǎn)介1
1.1 Apache Lucene簡(jiǎn)介1
1.1.1 熟悉Lucene2
1.1.2 Lucene的總體架構(gòu)2
1.1.3 分析數(shù)據(jù)4
1.1.4 Lucene查詢語(yǔ)言5
1.2 何為Elasticsearch8
1.2.1 Elasticsearch的基本概念8
1.2.2 Elasticsearch架構(gòu)背后的關(guān)鍵概念10
1.2.3 Elasticsearch的工作流程10
1.3 在線書(shū)店示例14
1.4 小結(jié)17
第2章 查詢DSL進(jìn)階18
2.1 Apache Lucene默認(rèn)評(píng)分公式解釋18
2.1.1 何時(shí)文檔被匹配上19
2.1.2 TF/IDF評(píng)分公式19
2.1.3 Elasticsearch如何看評(píng)分21
2.1.4 一個(gè)例子21
2.2 查詢改寫(xiě)24
2.2.1 前綴查詢示例24
2.2.2 回到Apache Lucene26
2.2.3 查詢改寫(xiě)的屬性28
2.3 查詢模板30
2.3.1 引入查詢模板31
2.3.2 Mustache模板引擎33
2.3.3 把查詢模板保存到文件35
2.4 過(guò)濾器的使用及作用原理36
2.4.1 過(guò)濾及查詢相關(guān)性36
2.4.2 過(guò)濾器的工作原理40
2.4.3 性能考量41
2.4.4 后置過(guò)濾和過(guò)濾查詢42
2.4.5 選擇正確的過(guò)濾方式44
2.5 選擇正確的查詢方式45
2.5.1 查詢方式分類(lèi)45
2.5.2 使用示例50
2.6 小結(jié)65
第3章 不只是文本搜索66
3.1 查詢二次評(píng)分66
3.1.1 什么是查詢二次評(píng)分67
3.1.2 一個(gè)查詢例子67
3.1.3 二次評(píng)分查詢的結(jié)構(gòu)67
3.1.4 二次評(píng)分參數(shù)70
3.1.5 總結(jié)70
3.2 多匹配控制71
3.3 重要詞項(xiàng)聚合78
3.3.1 一個(gè)例子79
3.3.2 選擇重要詞項(xiàng)81
3.3.3 多值分析81
3.3.4 額外的配置84
3.3.5 使用限制89
3.4 文檔分組89
3.4.1 top_hits聚合90
3.4.2 一個(gè)例子90
3.5 文檔關(guān)系95
3.5.1 對(duì)象類(lèi)型95
3.5.2 嵌套文檔98
3.5.3 parent-child關(guān)系99
3.5.4 其他解決方案102
3.6 Elasticsearch各版本中腳本的變化102
3.6.1 腳本變遷102
3.6.2 Groovy簡(jiǎn)單介紹103
3.6.3 全文檢索中的腳本108
3.6.4 Lucene表達(dá)式115
3.7 小結(jié)118
第4章 改善用戶搜索體驗(yàn)119
4.1 改正用戶拼寫(xiě)錯(cuò)誤119
4.1.1 測(cè)試數(shù)據(jù)120
4.1.2 深入技術(shù)細(xì)節(jié)121
4.1.3 suggester121
4.2 改善查詢相關(guān)性142
4.2.1 數(shù)據(jù)142
4.2.2 改善相關(guān)性的探索之旅145
4.3 小結(jié)157
第5章 分布式索引架構(gòu)159
5.1 選擇合適的分片和副本數(shù)159
5.1.1 分片和過(guò)度分配160
5.1.2 一個(gè)過(guò)度分配的正面例子161
5.1.3 多分片與多索引161
5.1.4 副本161
5.2 路由162
5.2.1 分片和數(shù)據(jù)162
5.2.2 測(cè)試路由功能162
5.2.3 索引時(shí)使用路由166
5.2.4 別名169
5.2.5 多個(gè)路由值169
5.3 調(diào)整默認(rèn)分片的分配行為170
5.3.1 部署意識(shí)171
5.3.2 過(guò)濾173
5.3.3 運(yùn)行時(shí)更新分配策略174
5.3.4 確定每個(gè)節(jié)點(diǎn)允許的總分片數(shù)175
5.3.5 確定每個(gè)物理機(jī)器允許的總分片數(shù)175
5.4 查詢執(zhí)行偏好179
5.5 小結(jié)181
第6章 底層索引控制182
6.1 改變Apache Lucene的評(píng)分方式182
6.1.1 可用的相似度模型183
6.1.2 為每字段配置相似度模型183
6.1.3 相似度模型配置184
6.1.4 選擇默認(rèn)的相似度模型185
6.2 選擇適當(dāng)?shù)哪夸泴?shí)現(xiàn)—store模塊188
6.3 準(zhǔn)實(shí)時(shí)、提交、更新及事務(wù)日志191
6.3.1 索引更新及更新提交192
6.3.2 事務(wù)日志193
6.3.3 準(zhǔn)實(shí)時(shí)讀取194
6.4 控制索引合并195
6.4.1 選擇正確的合并策略196
6.4.2 合并策略配置197
6.4.3 調(diào)度199
6.5 關(guān)于I/O調(diào)節(jié)200
6.5.1 控制I/O節(jié)流200
6.5.2 配置200
6.6 理解Elasticsearch緩存202
6.6.1 過(guò)濾器緩存203
6.6.2 字段數(shù)據(jù)緩存204
6.6.3 查詢分片緩存212
6.6.4 使用circuit breaker213
6.6.5 清除緩存214
6.7 小結(jié)215
第7章 管理Elasticsearch216
7.1 發(fā)現(xiàn)和恢復(fù)模塊216
7.1.1 發(fā)現(xiàn)模塊的配置217
7.1.2 主節(jié)點(diǎn)218
7.1.3 網(wǎng)關(guān)和恢復(fù)模塊的配置223
7.1.4 索引恢復(fù)API226
7.2 使用人類(lèi)友好的Cat API 229
7.2.1 基礎(chǔ)知識(shí)230
7.2.2 使用Cat API231
7.2.3 一些例子232
7.3 備份232
7.4 聯(lián)盟搜索236
7.4.1 測(cè)試用的集群236
7.4.2 建立部落節(jié)點(diǎn)237
7.4.3 通過(guò)部落節(jié)點(diǎn)讀取數(shù)據(jù)238
7.4.4 通過(guò)部落節(jié)點(diǎn)寫(xiě)入數(shù)據(jù)239
7.4.5 處理索引沖突240
7.4.6 屏蔽寫(xiě)操作241
7.5 小結(jié)242
第8章 提高性能243
8.1 使用doc values來(lái)優(yōu)化查詢243
8.1.1 字段緩存存在的問(wèn)題244
8.1.2 使用doc values的例子245
8.2 了解垃圾回收器247
8.2.1 Java內(nèi)存248
8.2.2 解決垃圾回收問(wèn)題249
8.2.3 在類(lèi)UNIX系統(tǒng)上避免內(nèi)存交換254
8.3 對(duì)查詢做基準(zhǔn)測(cè)試255
8.3.1 為基準(zhǔn)測(cè)試配置集群256
8.3.2 進(jìn)行基準(zhǔn)測(cè)試256
8.3.3 控制運(yùn)行中的基準(zhǔn)測(cè)試259
8.4 熱點(diǎn)線程261
8.4.1 熱點(diǎn)線程的使用說(shuō)明261
8.4.2 熱點(diǎn)線程API的響應(yīng)262
8.5 擴(kuò)展Elasticsearch263
8.5.1 垂直擴(kuò)展263
8.5.2 水平擴(kuò)展264
8.5.3 在高負(fù)載的場(chǎng)景下使用Elasticsearch271
8.6 小結(jié)283
第9章 開(kāi)發(fā)Elasticsearch插件284
9.1 創(chuàng)建Maven項(xiàng)目284
9.2 了解基本知識(shí)285
9.2.1 Maven Java項(xiàng)目的結(jié)構(gòu)285
9.2.2 POM的理念285
9.2.3 執(zhí)行構(gòu)建過(guò)程286
9.2.4 引入Maven裝配插件287
9.3 創(chuàng)建自定義REST行為289
9.3.1 設(shè)定289
9.3.2 實(shí)現(xiàn)細(xì)節(jié)289
9.4 創(chuàng)建自定義分析插件295
9.4.1 實(shí)現(xiàn)細(xì)節(jié)295
9.4.2 測(cè)試自定義分析插件302
9.5 小結(jié)304