Elasticsearch實(shí)戰(zhàn)
定 價(jià):79 元
- 作者:[美] 拉杜·喬戈(Radu Gheorghe) 馬修·李·欣曼(Matthew
- 出版時(shí)間:2018/10/1
- ISBN:9787115449153
- 出 版 社:人民郵電出版社
- 中圖法分類:TP391.3
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)主要展示如何使用Elasticsearch構(gòu)建可擴(kuò)展的搜索應(yīng)用程序。書(shū)中覆蓋了Elasticsearch的主要特性,從使用不同的分析器和查詢類型進(jìn)行相關(guān)性調(diào)優(yōu),到使用聚集功能進(jìn)行實(shí)時(shí)性分析,還有地理空間搜索和文檔過(guò)濾等更多吸引人的特性。
全書(shū)共分兩個(gè)部分,*部分解釋了核心特性,內(nèi)容主要涉及Elasticsearch的介紹,數(shù)據(jù)的索引、更新和刪除,數(shù)據(jù)的搜索,數(shù)據(jù)的分析,使用相關(guān)性進(jìn)行搜索,使用聚集來(lái)探索數(shù)據(jù),文檔間的關(guān)系等;第二部分介紹每個(gè)特性工作的更多細(xì)節(jié)及其對(duì)性能和可擴(kuò)展性的影響,以便對(duì)核心功能進(jìn)行產(chǎn)品化,內(nèi)容主要涉及水平擴(kuò)展和性能提升等。此外,本書(shū)還有6個(gè)附錄(網(wǎng)上下載),提供了讀者應(yīng)該知道的特性,展示了關(guān)于地理空間搜索和聚集,如何管理Elasticsearch插件,學(xué)習(xí)在搜索結(jié)果中如何高亮查詢單詞,在生產(chǎn)環(huán)境中用來(lái)協(xié)助管理Elasticsearch的第三方的監(jiān)控工具有哪些,如何使用Percolator過(guò)濾為多個(gè)查詢匹配少量文檔,如何使用不同的建議器來(lái)實(shí)現(xiàn)自動(dòng)完成的功能。
現(xiàn)代搜索看起來(lái)好像很神奇在搜索引擎中鍵入幾個(gè)單詞,搜索引擎看上去就好像知道你想要什么。有了Elasticsearch實(shí)時(shí)搜索和分析引擎,無(wú)需進(jìn)行復(fù)雜的底層編程,也無(wú)需理解高 級(jí)的數(shù)據(jù)科學(xué)算法,你就可以為用戶提供這種神奇的體驗(yàn)。你只要安裝它,調(diào)試它,就可以繼續(xù)你的工作了。
本書(shū)將教讀者編寫(xiě)提供專業(yè)的高質(zhì)量搜索的應(yīng)用程序的方法。隨著閱讀的深入,讀者將學(xué)會(huì)為任何應(yīng)用程序添加基本的搜索特性,通過(guò)預(yù)測(cè)性分析和相關(guān)性排序來(lái)增強(qiáng)搜索結(jié)果,并使用之前搜索中保存的數(shù)據(jù)為用戶提供定制化的體驗(yàn)。這本實(shí)戰(zhàn)型的書(shū)籍聚焦在使用HTTP協(xié)議的Elasticsearch REST API。代碼片段的書(shū)寫(xiě)多數(shù)是使用cURL的bash腳本,所以很容易翻譯成其他編程語(yǔ)言。
本書(shū)主要內(nèi)容
·什么是良好的搜索應(yīng)用?
·打造可擴(kuò)展的搜索解決方案。
·通過(guò)任何語(yǔ)言使用Elasticsearch 。
·配置和調(diào)優(yōu)。
對(duì)于構(gòu)建并管理面向搜索的應(yīng)用程序而言,本書(shū)是程序開(kāi)發(fā)者和系統(tǒng)管理員的極 佳選擇。
作者簡(jiǎn)介
拉杜·喬戈(Radu Gheorghe)是搜索技術(shù)顧問(wèn)和軟件工程師。
馬修·李·欣曼(Matthew Lee Hinman)開(kāi)發(fā)過(guò)基于云的高可用系統(tǒng)。
羅伊·羅素(Roy Russo)是預(yù)測(cè)分析方面的專家。
譯者簡(jiǎn)介
黃申博士,現(xiàn)任LinkedIn(領(lǐng)英)資深數(shù)據(jù)科學(xué)家,畢業(yè)于上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程專業(yè),師從俞勇教授。微軟學(xué)者、IBM ExtremeBlue天才計(jì)劃成員。長(zhǎng)期專注于大數(shù)據(jù)相關(guān)的搜索、推薦、廣告以及用戶精準(zhǔn)化領(lǐng)域。曾在微軟亞洲研究院、eBay中國(guó)、沃爾瑪1號(hào)店(現(xiàn)京東1號(hào)店)和大潤(rùn)發(fā)飛牛網(wǎng)擔(dān)任要職,帶團(tuán)隊(duì)完成了若干公司級(jí)的戰(zhàn)略項(xiàng)目。同時(shí)在國(guó)際上發(fā)表20多篇論文,并擁有10多項(xiàng)國(guó)際專利!队(jì)算機(jī)工程》特邀審稿專家,2016年出版了《大數(shù)據(jù)架構(gòu)商業(yè)之路》一書(shū),廣受好評(píng)。因?qū)I(yè)界做出卓越貢獻(xiàn),獲得美國(guó)政府頒發(fā)的美國(guó)杰出人才稱號(hào)。
第一部分
第1章 Elasticsearch介紹 2
1.1 用Elasticsearch解決搜索問(wèn)題 3
1.1.1 提供快速查詢 3
1.1.2 確保結(jié)果的相關(guān)性 4
1.1.3 超越精確匹配 5
1.2 探索典型的Elasticsearch使用案例 6
1.2.1 將Elasticsearch作為主要的后端系統(tǒng) 7
1.2.2 將Elasticsearch添加到現(xiàn)有的系統(tǒng) 7
1.2.3 將Elasticsearch和現(xiàn)有工具一同使用 8
1.2.4 Elasticsearch的主要特性 10
1.2.5 擴(kuò)展Lucene的功能 10
1.2.6 在Elasticsearch中組織數(shù)據(jù) 12
1.2.7 安裝Java語(yǔ)言 12
1.2.8 下載并啟動(dòng)Elasticsearch 13
1.2.9 驗(yàn)證是否工作 14
1.3 小結(jié) 16
第2章 深入功能 17
2.1 理解邏輯設(shè)計(jì):文檔、類型和索引 18
2.1.1 文檔 19
2.1.2 類型 20
2.1.3 索引 21
2.2 理解物理設(shè)計(jì):節(jié)點(diǎn)和分片 21
2.2.1 創(chuàng)建擁有一個(gè)或多個(gè)節(jié)點(diǎn)的集群 22
2.2.2 理解主分片和副本分片 23
2.2.3 在集群中分發(fā)分片 25
2.2.4 分布式索引和搜索 26
2.3 索引新數(shù)據(jù) 27
2.3.1 通過(guò)cURL索引一篇文檔 28
2.3.2 創(chuàng)建索引和映射類型 30
2.3.3 通過(guò)代碼樣例索引文檔 31
2.4 搜索并獲取數(shù)據(jù) 32
2.4.1 在哪里搜索 33
2.4.2 回復(fù)的內(nèi)容 33
2.4.3 如何搜索 36
2.4.4 通過(guò)ID獲取文檔 39
2.5 配置Elasticsearch 40
2.5.1 在elasticsearch.yml中指定集群的名稱 40
2.5.2 通過(guò)logging.yml指定詳細(xì)日志記錄 41
2.5.3 調(diào)整JVM設(shè)置 41
2.6 在集群中加入節(jié)點(diǎn) 42
2.6.1 啟動(dòng)第二個(gè)節(jié)點(diǎn) 43
2.6.2 增加額外的節(jié)點(diǎn) 44
2.7 小結(jié) 45
第3章 索引、更新和刪除數(shù)據(jù) 47
3.1 使用映射來(lái)定義各種文檔 48
3.1.1 檢索和定義映射 49
3.1.2 擴(kuò)展現(xiàn)有的映射 50
3.2 用于定義文檔字段的核心類型 51
3.2.1 字符串類型 52
3.2.2 數(shù)值類型 54
3.2.3 日期類型 55
3.2.4 布爾類型 56
3.3 數(shù)組和多字段 56
3.3.1 數(shù)組 56
3.3.2 多字段 57
3.4 使用預(yù)定義字段 58
3.4.1 控制如何存儲(chǔ)和搜索文檔 59
3.4.2 識(shí)別文檔 61
3.5 更新現(xiàn)有文檔 63
3.5.1 使用更新API 64
3.5.2 通過(guò)版本來(lái)實(shí)現(xiàn)并發(fā)控制 66
3.6 刪除數(shù)據(jù) 69
3.6.1 刪除文檔 70
3.6.2 刪除索引 71
3.6.3 關(guān)閉索引 72
3.6.4 重新索引樣本文檔 73
3.7 小結(jié) 73
第4章 搜索數(shù)據(jù) 74
4.1 搜索請(qǐng)求的結(jié)構(gòu) 75
4.1.1 確定搜索范圍 75
4.1.2 搜索請(qǐng)求的基本模塊 76
4.1.3 基于請(qǐng)求主體的搜索請(qǐng)求 78
4.1.4 理解回復(fù)的結(jié)構(gòu) 81
4.2 介紹查詢和過(guò)濾器DSL 82
4.2.1 match查詢和term過(guò)濾器 82
4.2.2 常用的基礎(chǔ)查詢和過(guò)濾器 85
4.2.3 match查詢和term過(guò)濾器 91
4.2.4 phrase_prefix查詢 92
4.3 組合查詢或復(fù)合查詢 93
4.3.1 bool查詢 93
4.3.2 bool過(guò)濾器 96
4.4 超越match和過(guò)濾器查詢 98
4.4.1 range查詢和過(guò)濾器 98
4.4.2 prefix查詢和過(guò)濾器 99
4.4.3 wildcard查詢 100
4.5 使用過(guò)濾器查詢字段的存在性 102
4.5.1 exists過(guò)濾器 102
4.5.2 missing過(guò)濾器 102
4.5.3 將任何查詢轉(zhuǎn)變?yōu)檫^(guò)濾器 103
4.6 為任務(wù)選擇最好的查詢 104
4.7 小結(jié) 105
第5章 分析數(shù)據(jù) 106
5.1 什么是分析 106
5.1.1 字符過(guò)濾 107
5.1.2 切分為分詞 108
5.1.3 分詞過(guò)濾器 108
5.1.4 分詞索引 108
5.2 為文檔使用分析器 109
5.2.1 在索引創(chuàng)建時(shí)增加分析器 109
5.2.2 在Elasticsearch的配置中添加分析器 111
5.2.3 在映射中指定某個(gè)字段的分析器 112
5.3 使用分析API來(lái)分析文本 113
5.3.1 選擇一個(gè)分析器 114
5.3.2 通過(guò)組合即興地創(chuàng)建分析器 115
5.3.3 基于某個(gè)字段映射的分析 115
5.3.4 使用詞條向量API來(lái)學(xué)習(xí)索引詞條 116
5.4 分析器、分詞器和分詞過(guò)濾器 117
5.4.1 內(nèi)置的分析器 117
5.4.2 分詞器 119
5.4.3 分詞過(guò)濾器 122
5.5 N元語(yǔ)法、側(cè)邊N元語(yǔ)法和滑動(dòng)窗口 128
5.5.1 一元語(yǔ)法過(guò)濾器 128
5.5.2 二元語(yǔ)法過(guò)濾器 129
5.5.3 三元語(yǔ)法過(guò)濾器 129
5.5.4 設(shè)置min_gram和max_gram 129
5.5.5 側(cè)邊N元語(yǔ)法過(guò)濾器 129
5.5.6 N元語(yǔ)法的設(shè)置 130
5.5.7 滑動(dòng)窗口分詞過(guò)濾器 131
5.6 提取詞干 132
5.6.1 算法提取詞干 133
5.6.2 使用字典提取詞干 133
5.6.3 重寫(xiě)分詞過(guò)濾器的詞干提取 134
5.7 小結(jié) 134
第6章 使用相關(guān)性進(jìn)行搜索 136
6.1 Elasticsearch的打分機(jī)制 137
6.1.1 文檔打分是如何運(yùn)作的 137
6.1.2 詞頻 137
6.1.3 逆文檔頻率 138
6.1.4 Lucene評(píng)分公式 138
6.2 其他打分方法 139
6.3 boosting 141
6.3.1 索引期間的boosting 142
6.3.2 查詢期間的boosting 142
6.3.3 跨越多個(gè)字段的查詢 143
6.4 使用解釋來(lái)理解文檔是如何被評(píng)分的 144
6.5 使用查詢?cè)俅蚍謥?lái)減小評(píng)分操作的性能影響 147
6.6 使用function_score來(lái)定制得分 148
6.6.1 weight函數(shù) 149
6.6.2 合并得分 150
6.6.3 field_value_factor函數(shù) 151
6.6.4 腳本 152
6.6.5 隨機(jī) 152
6.6.6 衰減函數(shù) 153
6.6.7 配置選項(xiàng) 155
6.7 嘗試一起使用它們吧 156
6.8 使用腳本來(lái)排序 157
6.9 字段數(shù)據(jù) 158
6.9.1 字段數(shù)據(jù)緩存 158
6.9.2 字段數(shù)據(jù)用在哪里 159
6.9.3 管理字段數(shù)據(jù) 160
6.10 小結(jié) 163
第7章 使用聚集來(lái)探索數(shù)據(jù) 164
7.1 理解聚集的具體結(jié)構(gòu) 166
7.1.1 理解聚集請(qǐng)求的結(jié)構(gòu) 166
7.1.2 運(yùn)行在查詢結(jié)果上的聚集 168
7.1.3 過(guò)濾器和聚集 169
7.2 度量聚集 170
7.2.1 統(tǒng)計(jì)數(shù)據(jù) 171
7.2.2 高級(jí)統(tǒng)計(jì) 172
7.2.3 近似統(tǒng)計(jì) 173
7.3 多桶型聚集 176
7.3.1 terms聚集 177
7.3.2 range聚集 183
7.3.3 histogram聚集 185
7.4 嵌套聚集 187
7.4.1 嵌套多桶聚集 189
7.4.2 通過(guò)嵌套聚集獲得結(jié)果分組 190
7.4.3 使用單桶聚集 192
7.5 小結(jié) 196
第8章 文檔間的關(guān)系 197
8.1 定義文檔間關(guān)系的選項(xiàng)概覽 197
8.1.1 對(duì)象類型 198
8.1.2 嵌套類型 200
8.1.3 父子關(guān)系 200
8.1.4 反規(guī)范化 200
8.2 將對(duì)象作為字段值 202
8.2.1 映射和索引對(duì)象 203
8.2.2 在對(duì)象中搜索 204
8.3 嵌套類型:聯(lián)結(jié)嵌套的文檔 206
8.3.1 映射并索引嵌套文檔 207
8.3.2 搜索和聚集嵌套文檔 210
8.4 父子關(guān)系:關(guān)聯(lián)分隔的文檔 216
8.4.1 子文檔的索引、更新和刪除 218
8.4.2 在父文檔和子文檔中搜索 220
8.5 反規(guī)范化:使用冗余的數(shù)據(jù)管理 227
8.5.1 反規(guī)范化的使用案例 228
8.5.2 索引、更新和刪除反規(guī)范化的數(shù)據(jù) 230
8.5.3 查詢反規(guī)范化的數(shù)據(jù) 233
8.6 應(yīng)用端的連接 234
8.7 小結(jié) 235
第二部分
第9章 向外擴(kuò)展 238
9.1 向Elasticsearch集群加入節(jié)點(diǎn) 238
9.2 發(fā)現(xiàn)其他Elasticsearch節(jié)點(diǎn) 241
9.2.1 通過(guò)廣播來(lái)發(fā)現(xiàn) 241
9.2.2 通過(guò)單播來(lái)發(fā)現(xiàn) 242
9.2.3 選舉主節(jié)點(diǎn)和識(shí)別錯(cuò)誤 243
9.2.4 錯(cuò)誤的識(shí)別 244
9.3 刪除集群中的節(jié)點(diǎn) 245
9.4 升級(jí)Elasticsearch的節(jié)點(diǎn) 250
9.4.1 進(jìn)行輪流重啟 250
9.4.2 最小化重啟后的恢復(fù)時(shí)間 251
9.5 使用_cat API 252
9.6 擴(kuò)展策略 254
9.6.1 過(guò)度分片 254
9.6.2 將數(shù)據(jù)切分為索引和分片 255
9.6.3 最大化吞吐量 256
9.7 別名 257
9.7.1 什么是別名 258
9.7.2 別名的創(chuàng)建 259
9.8 路由 261
9.8.1 為什么使用路由 261
9.8.2 路由策略 262
9.8.3 使用_search_shards API來(lái)決定搜索在哪里執(zhí)行 263
9.8.4 配置路由 265
9.8.5 結(jié)合路由和別名 265
9.9 小結(jié) 267
第10章 提升性能 268
10.1 合并請(qǐng)求 269
10.1.1 批量索引、更新和 刪除 269
10.1.2 多條搜索和多條獲取 API接口 273
10.2 優(yōu)化Lucene分段的 處理 276
10.2.1 刷新和沖刷的閾值 276
10.2.2 合并以及合并策略 279
10.2.3 存儲(chǔ)和存儲(chǔ)限流 282
10.3 充分利用緩存 285
10.3.1 過(guò)濾器和過(guò)濾器 緩存 285
10.3.2 分片查詢緩存 291
10.3.3 JVM堆和操作系統(tǒng) 緩存 293
10.3.4 使用預(yù)熱器讓緩存 熱身 296
10.4 其他的性能權(quán)衡 297
10.4.1 大規(guī)模的索引還是 昂貴的搜索 298
10.4.2 調(diào)優(yōu)腳本,要么 別用它 301
10.4.3 權(quán)衡網(wǎng)絡(luò)開(kāi)銷,更少的 數(shù)據(jù)和更好的分布式 得分 305
10.4.4 權(quán)衡內(nèi)存,進(jìn)行深度 分頁(yè) 308
10.5 小結(jié) 310
第11章 管理集群 311
11.1 改善默認(rèn)的配置 311
11.1.1 索引模板 312
11.1.2 默認(rèn)的映射 315
11.2 分配的感知 318
11.2.1 基于分片的分配 318
11.2.2 強(qiáng)制性的分配感知 319
11.3 監(jiān)控瓶頸 320
11.3.1 檢查集群的健康 狀態(tài) 320
11.3.2 CPU:慢日志、熱線程和 線程池 322
11.3.3 內(nèi)存:堆的大小、字段和 過(guò)濾器緩存 326
11.3.4 操作系統(tǒng)緩存 330
11.3.5 存儲(chǔ)限流 330
11.4 備份你的數(shù)據(jù) 331
11.4.1 快照API 331
11.4.2 將數(shù)據(jù)備份到共享的文件系統(tǒng) 332
11.4.3 從備份中恢復(fù) 335
11.4.4 使用資料庫(kù)插件 336
11.5 小結(jié) 337
附錄A 處理地理空間的數(shù)據(jù)(網(wǎng)上下載)
附錄B 插件(網(wǎng)上下載)
附錄C 高亮(網(wǎng)上下載)
附錄D Elasticsearch的監(jiān)控插件(網(wǎng)上下載)
附錄E 使用滲濾器將搜索顛倒過(guò)來(lái)(網(wǎng)上下載)
附錄F 為自動(dòng)完成和您是指功能使用建議器(網(wǎng)上下載)