3dwoo大學簡體電腦書店
深入理解Elasticsearch(原書第3版)
( 簡體 字)
作者:[印度] 波哈維·荻西特(Bharvi Dixit) 著類別:1. -> 程式設計 -> 搜索引擎
出版社:機械工業出版社深入理解Elasticsearch(原書第3版) 3dWoo書號: 52206
詢問書籍請說出此書號!
有庫存
NT售價: 445
出版日:12/1/2019
頁數:280
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111643074 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
譯者序
前言
致謝
作者簡介
審閱者簡介
第1章 回顧Elasticsearch與演進歷史 1
1.1 Apache Lucene簡介 1
1.1.1 更深入地了解Lucene索引 2
1.1.2 Elasticsearch概覽 7
1.2 Elasticsearch 5.x介紹 8
1.2.1 Elasticsearch新特性簡介 9
1.2.2 Elasticsearch的演進 10
1.2.3 2.x到5.x的變化 14
1.3 小結 16
第2章 查詢DSL進階 17
2.1 Lucene的新默認文本評分機制——BM25 17
2.1.1 理解精確率與召回率 18
2.1.2 回顧TF-IDF 18
2.1.3 BM25與TF-IDF有什么不同 21
2.2 查詢DSL重構 22
2.3 為任務選擇合適的查詢 22
2.3.1 查詢方式分類 22
2.3.2 使用示例 27
2.3.3 查詢DSL的其他重要變化 36
2.4 查詢改寫 37
2.4.1 前綴查詢示例 37
2.4.2 回到Apache Lucene 39
2.4.3 查詢改寫的屬性 40
2.5 查詢模板 43
2.5.1 引入查詢模板 43
2.5.2 Mustache模板引擎 45
2.6 小結 49
第3章 不只是文本搜索 50
3.1 多匹配控制 50
3.2 多匹配類型 51
3.2.1 最佳字段匹配 51
3.2.2 跨字段匹配 54
3.2.3 最多字段匹配 55
3.2.4 短語匹配 56
3.2.5 帶前綴的短語匹配 56
3.3 用函數得分查詢控制分數 57
3.4 函數得分查詢下的內嵌函數 58
3.4.1 weight函數 58
3.4.2 字段值因子函數 59
3.4.3 腳本評分函數 60
3.4.4 衰變函數——linear、exp和gauss 60
3.5 查詢二次評分 61
3.6 二次評分查詢的結構 62
3.7 Elasticsearch腳本 66
3.7.1 語法 66
3.7.2 Elasticsearch各版本中腳本的變化 66
3.8 新的默認腳本語言Painless 67
3.8.1 用Painless寫腳本 67
3.8.2 示例 69
3.8.3 用腳本為結果排序 71
3.8.4 按多個字段排序 72
3.9 Lucene表達式 73
3.9.1 基礎知識 73
3.9.2 一個例子 73
3.10 小結 75
第4章 數據建模與分析 76
4.1 Elasticsearch中的數據建模方法 76
4.2 管理Elasticsearch中的關系型數據 77
4.2.1 對象類型 77
4.2.2 嵌套文檔 80
4.2.3 父子關系 82
4.2.4 其他可選方案 84
4.2.5 數據反范式的例子 84
4.3 用聚合做數據分析 85
4.3.1 Elasticsearch 5.0的快速聚合 85
4.3.2 重溫聚合 86
4.3.3 一類新的聚合:矩陣聚合 93
4.4 小結 96
第5章 改善用戶搜索體驗 97
5.1 改正用戶拼寫錯誤 97
5.1.1 測試數據 98
5.1.2 深入技術細節 99
5.2 suggester 99
5.2.1 在_search端點下使用suggester 99
5.2.2 term suggester 103
5.2.3 phrase suggester 105
5.2.4 completion suggester 113
5.3 實現自己的自動完成功能 117
5.4 處理同義詞 120
5.4.1 為同義詞搜索準備settings 120
5.4.2 格式化同義詞 121
5.4.3 同義詞擴展與收縮 122
5.5 小結 123
第6章 分布式索引架構 125
6.1 配置示例的多節點集群 125
6.2 選擇合適數量的分片和副本 127
6.2.1 分片和預分配 127
6.2.2 預分配的正面例子 128
6.2.3 多分片與多索引 128
6.3 路由 129
6.3.1 分片和數據 129
6.3.2 測試路由功能 130
6.3.3 在索引過程中使用路由 132
6.3.4 路由實戰 132
6.3.5 查詢 134
6.3.6 別名 136
6.3.7 多值路由 137
6.4 分片分配控制 137
6.4.1 部署意識 138
6.4.2 確定每個節點允許的總分片數 142
6.4.3 確定每臺物理服務器允許的總分片數 143
6.5 查詢執行偏好 146
6.5.1 preference參數 146
6.5.2 使用查詢執行偏好的例子 148
6.6 將數據切分到多個路徑中 148
6.7 索引與類型——創建索引的改進方法 148
6.8 小結 149
第7章 底層索引控制 150
7.1 改變Apache Lucene的評分方式 150
7.2 可用的相似度模型 151
7.3 為每個字段配置相似度模型 151
7.4 相似度模型配置 152
7.5 選擇默認的相似度模型 153
7.6 選擇合適的目錄實現——store模塊 156
7.7 存儲類型 156
7.8 準實時、提交、更新及事務日志 158
7.8.1 索引更新及更新提交 159
7.8.2 更改默認的刷新時間 159
7.8.3 事務日志 160
7.8.4 實時讀取 161
7.9 控制段合并 162
7.9.1 Elasticsearch合并策略的變化 163
7.9.2 配置tiered合并策略 163
7.9.3 合并調度 164
7.9.4 強制合并 165
7.10 理解Elasticsearch緩存 166
7.10.1 節點查詢緩存 166
7.10.2 分片查詢緩存 166
7.10.3 字段數據緩存 168
7.10.4 使用circuit breaker 168
7.11 小結 169
第8章 管理Elasticsearch 170
8.1 Elasticsearch的節點類型 170
8.1.1 數據節點 171
8.1.2 主節點 171
8.1.3 Ingest節點 171
8.1.4 部落節點 172
8.1.5 協調節點/客戶端節點 172
8.2 發現和恢復模塊 172
8.2.1 發現模塊的配置 173
8.2.2 網關和恢復模塊的配置 177
8.2.3 索引恢復API 179
8.3 使用對人類友好的Cat API 182
8.3.1 Cap API的基礎知識 183
8.3.2 使用Cat API 184
8.4 備份 186
8.4.1 快照API 187
8.4.2 在文件系統中保存備份 187
8.4.3 在云中保存備份 189
8.5 快照恢復 193
8.6 小結 196
第9章 數據轉換與聯盟搜索 197
9.1 用ingest節點在Elasticsearch里對數據進行預處理 197
9.1.1 使用ingest管道 198
9.1.2 處理管道中的錯誤 202
9.1.3 使用ingest處理器 204
9.2 聯盟搜索 208
9.2.1 測試集群 208
9.2.2 建立部落節點 209
9.2.3 通過部落節點讀取數據 211
9.2.4 主節點級別的讀操作 212
9.2.5 通過部落節點寫入數據 213
9.2.6 主節點級別的寫操作 213
9.2.7 處理索引沖突 213
9.2.8 屏蔽寫操作 215
9.3 小結 215
第10章 提升性能 216
10.1 查詢驗證與分析器 216
10.1.1 在執行前就驗證代價大的查詢 217
10.1.2 獲得詳細查詢執行報告的查詢分析器 219
10.1.3 關于查詢分析用途的思考 221
10.2 熱點線程 222
10.2.1 熱點線程的使用說明 222
10.2.2 熱點線程API的響應 223
10.3 擴展Elasticsearch集群 224
10.3.1 垂直擴展 224
10.3.2 水平擴展 225
10.3.3 在高負載的場景下使用Elasticsearch 231
10.4 用shrink和rollover API高效管理基于時間的索引 242
10.4.1 shrink API 243
10.4.2  rollover API 244
10.5 小結 246
第11章 開發Elastisearch插件 247
11.1 創建Apache Maven的項目架構 247
11.1.1 了解基礎知識 248
11.1.2 Maven Java項目的結構 248
11.2 創建自定義REST行為插件 252
11.2.1 設定 252
11.2.2 實現細節 252
11.2.3 測試階段 256
11.2.4 檢驗REST行為插件是否工作正常 257
11.3 創建自定義分析插件 258
11.3.1 實現細節 258
11.3.2 測試自定義分析插件 262
11.4 小結 264
第12章 介紹Elastic Stack 5.0 265
12.1 Elastic Stack 5.0簡介 265
12.2 介紹Logstash、Beats和Kibana 266
12.2.1 使用Logstash 266
12.2.2 引入Beats作為數據傳輸器 271
12.2.3 使用Kibana 273
12.3 小結 282
Elasticsearch是一個開源的搜索和分析引擎,具有現代、快速、分布式、可擴展、容錯等優點。Elasticsearch借助了Apache Lucene的能力,讓你擁有更強的把控力,可以索引海量數據,并進行搜索。

本書先簡單回顧基本知識,然后詳細講述Elasticsearch的中級和高級功能,比如查詢、索引、搜索和修改數據。此外,還介紹許多高級概念,包括聚合、索引控制、分片、復制和集群等。

本書也會介紹Elasticsearch的監控和管理模塊,包括備份和恢復。你將了解在特定的場景下,如何擴展Elasticsearch集群并提升它的性能。書中還會演示如何在Elasticsearch中創建分析插件。



通過閱讀本書,你將學到:

理解Apache Lucene和Elasticsearch 5的設計與架構。

使用和配置Apache Lucene 6的默認文本評分機制。

在用Elasticsearch處理關系型數據時如何避免遇到陷阱。

如何根據不同的用例選擇合適的查詢,并使用腳本模塊,包括新的默認腳本語言Painless。

探索擴展生產集群的正確方法,提升Elasticsearch的性能。

管理Elasticsearch的搜索、索引和聚合特性。

開發自己的Elasticsearch插件,擴展Elasticsearch的功能。



本書是一本Elasticsearch進階實踐指南。面向Elasticsearch的中高級讀者,從設計原理、部署調優、高級特性、擴展開發等方面系統且深入地闡釋Elasticsearch涉及的工具、方法、原則和最佳實踐,幫助你全面提升技能,高效管理和使用Elasticsearch。

全書共12章。第1章介紹Elasticsearch基本概念及新特性;第2章講解新的默認評分算法BM25和Elasticsearch各種查詢功能;第3章講解多匹配控制、二次評分、函數評分等查詢方法,同時介紹新的默認腳本語言Painless;第4章討論在Elasticsearch中進行數據建模的不同方法,以及用于數據分析的Elasticsearch聚合模塊;第5章介紹提升用戶搜索體驗的一些方法;第6章重點介紹Elasticsearch的分布式索引架構;第7章詳細討論Apache Lucene的評分細節、存儲機制等;第8章介紹與管理Elasticsearch相關的內容;第9章介紹ingest節點和聯盟搜索;第10章介紹性能提升方法并給出一些調優建議;第11章介紹Elasticsearch插件開發方法;第12章介紹Elasticsearch、Logstash、Kibana和Beats等組件。
歡迎來到Elasticsearch的世界并閱讀本書。在閱讀的過程中,我們將帶你了解與Elasticsearch緊密相關的各種話題。但請注意,本書的目標讀者并不是初學者,Elasticsearch從1.x演進到5.x已經有了非常大的變化,因此本書在上一版的基礎上補充了很多新內容。

本書將探討與Elasticsearch和Lucene相關的各方面內容。首先簡單介紹一下Lucene和Elasticsearch,帶你了解Elasticsearch提供的各種查詢方法。在這里會涉及與查詢相關的不同主題,比如結果過濾、在特定場景下如何選擇合適的查詢方式等。Elasticsearch當然并非只具備查詢功能,本書還將介紹Elasticsearch新引入的聚合功能以及其他特性,幫你挖掘出被索引數據的價值,并為用戶提供更好的查詢體驗。

在與Elasticsearch腳本模塊相關的章節中,也將討論在Elasticsearch中進行數據建模和處理關系型數據的方法,同時也會展示一些用新的默認腳本語言Painless寫成的例子。

對大多數用戶來說,查詢和數據分析是Elasticsearch最吸引人的部分,不過這些并不是本書討論的全部內容。因此在索引架構的部分,本書還會試圖與讀者探討一些額外的話題,比如如何選擇合適的分片數和副本數、如何調整分片分配方式等。在討論Elasticsearch和Lucene之間的關系時,還將介紹不同的評分算法、如何選擇合適的存儲機制、它們之間的差異、為什么做出合適的選擇很重要等。

Elasticsearch的管理功能雖然被放在了最后討論,但同樣重要。這一部分內容包括發現模塊和恢復模塊,以及對人類友好的Cat API——使用它可以快速獲取管理命令的結果,并將返回的JSON格式數據以人類易于閱讀的格式展現,無須再次轉換。我們還將討論ingest節點,它可以在生成索引之前就對Elasticsearch中的數據進行預處理,以及如何利用部落節點來完成在多個節點之間進行聯合搜索的功能。

看書名就知道,本書不會錯過與性能相關的話題,會用整整一章來專門討論它。

與本書第2版一樣,也有一章專門討論Elasticsearch插件的開發。展示如何構建Apache Maven項目,并開發兩個不同類型的插件——自定義REST操作插件和自定義分析插件。

最后一章將討論完整的Elastic Stack所包含的全部組件,讀后會對如何開始使用Logstash、Kibana和Beats等工具有大致的了解。

讀過上述內容之后,如果對某些內容產生了興趣,那么這本書就是適合的。希望讀者在讀完整本書之后,會喜歡它。

本書主要內容

第1章先介紹了Apache Lucene的工作方式,再介紹Elasticsearch 5.x。主要關注基本概念以及Elasticsearch在從1.x到5.x的演進過程中發生的重要功能變化。

第2章講解新的默認評分算法BM25,以及它與之前的TF-IDF算法相比的優點。另外還講解了Elasticsearch的各種功能,如查詢改寫、查詢模板、查詢模塊的變化,以及在特定場景下可以選擇的不同查詢方法,等等。

第3章講述了多匹配控制、二次評分、函數評分查詢等查詢相關功能。這一章也包括Elasticsearch的腳本模塊相關內容。

第4章討論了在Elasticsearch中進行數據建模的不同方法,以及在真實場景中如何用parent-child關系和嵌套數據類型來處理文檔之間的關系。這一章還進一步討論了用于數據分析的Elasticsearch聚合模塊。

第5章關注通過查詢建議器(suggester)提升用戶搜索體驗的話題,它可以改正查詢語句中的拼寫錯誤,提供高效的自動補齊功能。本章內容還包括如何提高查詢相關性,如何使用同義詞進行搜索等。

第6章的主要內容包括選擇正確的分片數和副本數、路由是怎么工作的、分片分配是怎么工作的、如何影響分片行為等。本章還討論了查詢執行偏好是什么,以及它是怎樣影響查詢執行的。

第7章講述如何更改Apache Lucene的評分機制,以及如何選擇備用的評分算法。本章還包括準實時搜索、索引和事務日志的使用,理解索引的段合并機制,再基于Elasticsearch 5.x的刪除合并策略細節,就可以根據場景來進行調優了。在本章的最后,還可以了解IO節流(IO Throttling)和Elasticsearch的緩存機制。

第8章關注與管理Elasticsearch相關的內容。其中介紹了什么是發現模塊、網關模塊和恢復模塊,并講解了如何配置它們,以及為什么值得如此大費周章地配置它們。本章還介紹了什么是Cat API、如何備份數據并恢復到不同云服務上(亞馬遜AWS、微軟Azure等)。

第9章講述了Elasticsearch 5的最新特性——ingest節點,用它可以先對數據進行預處理,再在Elasticsearch中生成索引。本章也講到了聯盟搜索使用部落節點在不同的集群之間完成搜索的工作原理。

第10章討論在不同的負載下如何提升性能、擴展生產集群的正確方法、垃圾回收原理、熱點線程問題等以及如何應對它們,并進一步討論了查詢分析和查詢基準測試。本章最后針對高查詢量和高索引吞吐率這些不同場景,給出了一些Elasticsearch集群的調優建議。

第11章詳細地演示和講解了如何開發自己的REST操作插件和語言分析插件,以及Elasticsearch插件的開發方法。

第12章介紹了Elastic Stack 5.0的各個組件,包括Elasticsearch、Logstash、Kibana和Beats等。

閱讀本書的必備資源

本書基于Elasticsearch 5.0.x寫成,所有范例代碼都可以在該版本下正常運行。除此之外,還需要curl或者一個與curl類似的可以發送HTTP請求的命令行工具,curl在絕大多數操作系統上都可以使用。請注意,本書中的所有例子都使用了curl。如果想換用其他工具,請注意對請求進行正確的格式轉換,以保證選擇的工具可以正確地解析請求。

另外,如果想要成功運行第11章中的例子,需要在電腦上安裝1.8.0_73版本或以上的JDK,并需要一個可以開發代碼的編輯器,比如Eclipse之類的Java IDE。本書使用Apache Maven來構建代碼和管理依賴項。

本書最后一章基于Elastic Stack 5.0.0寫成,因此要準備好Logstash、Kibana和Metricbeat,并要注意保證版本兼容。

本書的目標讀者

本書的目標讀者是那些對Elasticsearch的基本概念已經熟悉,還想對這個強大的搜索服務器有進一步了解的Elasticsearch用戶和發燒友。書中也包括Apache Lucene和Elasticsearch的工作原理,以及Elasticsearch從1.x到5.x的演進過程。除此之外,想了解如何改進查詢相關性、如何自己開發插件來擴展Elasticsearch功能的讀者,也可以從中受益。

如果剛剛接觸Elasticsearch,對查詢和索引等基本概念還不熟悉,閱讀本書可能會有些吃力,因為大多數章節都假設讀者已經具備了相關背景知識。

約定

在本書中可以看到不同字體的文字,它們是用來表示不同信息的。下面是一些例子,用來解釋各種不同的字體各自代表什么意思。

下面是一段代碼:



如果希望讀者特別留意代碼中的某些部分,相關內容會以粗體顯示:



所有命令行的輸入或輸出都用下面的字體表示:

這個符號表示警告或者重要提示。

這個符號表示提示或者小竅門。
pagetop