發表於2024-12-18
資深軟件開發專傢、架構師撰寫,係統且深入闡釋ElasticSearch涉及的工具、方法、原則和實踐
深入剖析ElasticSearch應用過程中遇到的各個層麵的問題,涉及分布式索引機製、係統監控及性能優化、用戶體驗改善、Java API應用,以及自定義插件開發
資深軟件開發專傢、架構師撰寫,係統且深入闡釋ElasticSearch涉及的工具、方法、原則和實踐,深入剖析ElasticSearch應用過程中遇到的各個層麵的問題,涉及分布式索引機製、係統監控及性能優化、用戶體驗改善、Java API應用,以及自定義插件開發等,能為工程師與架構師快速提高ElasticSearch水平提供有效指導。
本書共9章,第1章介紹Apache Lucene的工作方式、ElasticSearch的基本概念以及ElasticSearch的工作機製;第2章描述Lucene評分機製、如何進行查詢重寫,以及ElasticSearch的批處理API和如何使用過濾器來優化查詢;第3章描述如何修改Lucene評分,如何使用不同的倒排索引格式來改變索引字段的結構;第4章闡述如何選擇恰當的索引分片、路由工作機製、索引分片機製;第5章介紹如何為具體應用選擇正確的目錄實現,同時闡述發現、網關、恢復模塊及其配置方式,以及調優ElasticSearch的緩存機製;第6章介紹JVM垃圾收集的工作原理、重要性以及如何調優;第7章介紹幫助修正查詢中的拼寫錯誤以及構建高效的自動完成機製——查詢建議,還展示如何通過使用不同查詢類型和ElasticSearch的其他功能來提高查詢相關性;第8章重點闡釋ElasticSearch的JAVA API;第9章通過演示如何開發你自己的河流和語言處理插件來介紹ElasticSearch的插件開發。
Rafa· Ku,資深軟件開發專傢,現任Sematext集團公司谘詢專傢及軟件工程師。他專注於Apache Lucene、Solr、ElasticSearch、Hadoop stack等開源技術,擁有超過11年的軟件研發經驗。他還是solr.pl網站的聯閤創始人,該網站緻力於幫助人們解決Solr、Lucene的相關問題。
Marek Rogozińskis,資深軟件架構師和谘詢師,擁有超過10年的行業從業經驗,專注基於開源搜索引擎(如Solr、ElasticSearch等)的解決方案及大數據分析技術(如Hadoop、HBase、Twitter Storm等)。他是solr.pl網站的聯閤創始人,除本書外,還著有《ElasticSearch Server》。
ElasticSearch是一個優秀的開源分布式搜索引擎,同時有良好的社區和商業支持。對於中小型的垂直搜索引擎,ElasticSearch是一個不錯的選擇。本書是一本ElasticSearch的進階教材,深入剖析DSL、索引控製、分布式實現、係統運維等高級內容,特彆適閤深入研究ElasticSearch。
—— 徐川 明星衣櫥CTO,前雅虎高級工程師
ElasticSearch的齣現,讓開源搜索産品真正進入分布式時代。本書是一本不可多得的關於ElasticSearch的著作,既對ElasticSearch的全文索引、IR模型、分布式機製有深入剖析,又有生動翔實的示例,能幫助讀者快速提升在該領域的技術水平。
—— 高劍林 騰訊(架構平颱部)資深技術專傢
除瞭用於搜索,ElasticSearch也是日誌存儲、離綫數據分析挖掘的利器。本書深入淺齣,案例豐富,在信息檢索模型、準實時搜索、分布式架構、係統優化等諸多方麵都有精彩的論述。
—— 李偉博士 微軟(bing)數據挖掘組高級工程師
很高興看到《Mastering ElasticSearch》中文版麵市,本書對ElasticSearch的分布式係統架構、係統調優有較深入的探討,是一本進階的好讀物,其中一些係統設計思維對於文件係統研發人員也是有所裨益的。
—— 許加強 前IBM(GPFS)資深工程師
盡管ElasticSearch是一個開源搜索産品,它在百度也被廣泛應用。目前已經覆蓋到20多個業務綫。這本書針對性較強,既不乏典型實例,也有一定的理論深度。非常適閤進階用戶閱讀。
—— 陳鐵兵 百度網頁搜索部高級工程師
譯者序
前言
緻謝
作者簡介
評審者簡介
第1章 ElasticSearch簡介1
1.1 Apache Lucene簡介1
1.1.1 熟悉Lucene2
1.1.2 Lucene的總體架構2
1.1.3 分析你的數據3
1.1.4 Lucene查詢語言4
1.2 ElasticSearch簡介6
1.2.1 ElasticSearch的基本概念7
1.2.2 ElasticSearch架構背後的關鍵概念8
1.2.3 ElasticSearch的工作流程9
1.3 小結13
第2章 查詢DSL進階14
2.1 Apache Lucene默認評分公式解釋14
2.1.1 何時文檔被匹配上15
2.1.2 TF/IDF評分公式15
2.1.3 ElasticSearch如何看評分16
2.2 查詢改寫17
2.2.1 前綴查詢範例17
2.2.2 迴顧Apache Lucene19
2.2.3 查詢改寫的屬性20
2.3 二次評分21
2.3.1 理解二次評分21
2.3.2 範例數據21
2.3.3 查詢22
2.3.4 二次評分查詢的結構22
2.3.5 二次評分參數配置23
2.3.6 小結24
2.4 批量操作24
2.4.1 批量取24
2.4.2 批量查詢26
2.5 排序27
2.5.1 基於多值字段的排序28
2.5.2 基於多值geo字段的排序28
2.5.3 基於嵌套對象的排序30
2.6 數據更新API31
2.6.1 簡單字段更新31
2.6.2 使用腳本按條件更新32
2.6.3 使用更新 API創建或刪除文檔33
2.7 使用過濾器優化查詢33
2.7.1 過濾器與緩存34
2.7.2 詞項查找過濾器36
2.8 ElasticSearch切麵機製中的過濾器與作用域40
2.8.1 範例數據40
2.8.2 切麵計算和過濾41
2.8.3 過濾器作為查詢的一部分42
2.8.4 切麵過濾器44
2.8.5 全局作用域45
2.9 小結47
第3章 底層索引控製48
3.1 改變Apache Lucene的評分方式48
3.1.1 可用的相似度模型49
3.1.2 為每字段配置相似度模型49
3.2 相似度模型配置50
3.2.1 選擇默認的相似度模型51
3.2.2 配置被選用的相似度模型52
3.3 使用編解碼器53
3.3.1 簡單使用範例53
3.3.2 工作原理解釋54
3.3.3 可用的倒排錶格式55
3.3.4 配置編解碼器56
3.4 準實時、提交、更新及事務日誌58
3.4.1 索引更新及更新提交59
3.4.2 事務日誌60
3.4.3 準實時讀取62
3.5 深入理解數據處理62
3.5.1 輸入並不總是進行文本分析62
3.5.2 範例的使用65
3.5.3 索引期更換分詞器67
3.5.4 搜索時更換分析器68
3.5.5 陷阱與默認分析68
3.6 控製索引閤並68
3.6.1 選擇正確的閤並策略69
3.6.2 閤並策略配置70
3.6.3 調度72
3.7 小結73
第4章 分布式索引架構74
4.1 選擇閤適的分片和副本數74
4.1.1 分片和過度分配75
4.1.2 一個過度分配的正麵例子75
4.1.3 多分片與多索引76
4.1.4 副本76
4.2 路由76
4.2.1 分片和數據77
4.2.2 測試路由功能77
4.2.3 索引時使用路由80
4.2.4 彆名83
4.2.5 多個路由值83
4.3 調整默認的分片分配行為84
4.3.1 分片分配器簡介84
4.3.2 even_shard 分片分配器84
4.3.3 balanced分片分配器85
4.3.4 自定義分片分配器85
4.3.5 裁決者86
4.4 調整分片分配88
4.4.1 部署意識89
4.4.2 過濾91
4.4.3 運行時更新分配策略92
4.4.4 確定每個節點允許的總分片數93
4.4.5 更多的分片分配屬性96
4.5 查詢執行偏好97
4.6 應用我們的知識99
4.6.1 基本假定99
4.6.2 配置100
4.6.3 變化來瞭104
4.7 小結105
第5章 管理ElasticSearch106
5.1 選擇正確的目錄實現-存儲模塊106
5.2 發現模塊的配置109
5.2.1 Zen發現109
5.2.2 亞馬遜EC2發現111
5.2.3 本地網關114
5.2.4 恢復配置115
5.3 索引段統計116
5.3.1 segments API簡介116
5.3.2 索引段信息的可視化118
5.4 理解ElasticSearch緩存119
5.4.1 過濾器緩存119
5.4.2 字段數據緩存121
5.4.3 清除緩存126
5.5 小結127
第6章 故障處理129
6.1 瞭解垃圾迴收器129
6.1.1 Java內存130
6.1.2 處理垃圾迴收問題131
6.1.3 在類UNIX係統中避免內存交換135
6.2 關於I/O調節136
6.2.1 控製IO節流136
6.2.2 配置136
6.3 用預熱器提升查詢速度138
6.3.1 為什麼使用預熱器138
6.3.2 操作預熱器138
6.3.3 測試預熱器141
6.4 熱點綫程144
6.4.1 澄清熱點綫程API的用法誤區145
6.4.2 熱點綫程API的響應信息145
6.5 現實場景146
6.5.1 越來越差的性能146
6.5.2 混雜的環境和負載不平衡148
6.5.3 我的服務器齣故障瞭149
6.6 小結150
第7章 改善用戶搜索體驗151
7.1 改正用戶拼寫錯誤151
7.1.1 測試數據152
7.1.2 深入技術細節152
7.1.3 completion suggester168
7.2 改善查詢相關性172
7.2.1 數據172
7.2.2 改善相關性的探索之旅174
7.3 小結188
第8章 ElasticSearch Java API189
8.1 ElasticSearch Java API簡介189
8.2 代碼190
8.3 連接到集群191
8.3.1 成為ElasticSearch節點191
8.3.2 使用傳輸機連接方式192
8.3.3 選擇閤適的連接方式193
8.4 API剖析194
8.5 CRUD操作195
8.5.1 讀取文檔195
8.5.2 索引文檔197
8.5.3 更新文檔199
8.5.4 刪除文檔201
8.6 ElasticSearch查詢203
8.6.1 準備查詢請求203
8.6.2 構造查詢203
8.6.3 分頁206
8.6.4 排序207
8.6.5 過濾207
8.6.6 切麵計算208
8.6.7 高亮209
8.6.8 查詢建議209
8.6.9 計數210
8.6.10 滾動211
8.7 批量執行多個操作211
8.7.1 批量操作211
8.7.2 根據查詢刪除文檔212
8.7.3 Multi GET212
8.7.4 Multi Search212
8.8 Percolator213
8.9 explain API214
8.10 構造JSON格式的查詢和文檔214
8.11 管理API216
8.11.1 集群管理API216
8.11.2 索引管理API219
8.12 小結226
第9章 開發ElasticSearch插件227
9.1 建立Apache Maven項目結構227
9.1.1 瞭解基本知識228
9.1.2 Maven Java項目的結構228
9.1.3 POM的理念228
9.1.4 運行構建過程229
9.1.5 引入Maven裝配插件230
9.2 創建一個自定義river插件232
9.2.1 實現細節232
9.2.2 測試river238
9.3 創建自定義分析插件240
9.3.1 實現細節240
9.3.2 測試自定義分析插件247
9.4 小結249
歡迎來到ElasticSearch的世界。通過閱讀本書,我們將帶你接觸與ElasticSearch緊密相關的各種話題。本書會從介紹Apache Lucene及ElasticSearch的基本概念開始。即使讀者熟悉這些知識,簡略的介紹也是很有必要的,掌握背景知識對於全麵理解集群構建、索引文檔、搜索這些操作背後到底發生瞭什麼至關重要。
之後,讀者將學習Lucene的評分過程是如何工作的,如何影響評分,以及如何讓ElasticSearch選擇不同的評分算法。本書也將介紹什麼是查詢重寫以及進行查詢重寫的原因。除此之外,本書還將介紹如何修改查詢來影響ElasticSearch的緩存功能以及如何最大限度地使用緩存。
接著你將學習索引控製的相關知識:如何通過設置不同的倒排錶格式(posting format)來改變索引字段的寫入模式;索引的段閤並機製和段閤並的重要性,以及如何調整段閤並來適應應用場景;深入探討索引分片(shard)的分配機製、路由機製,以及當數據量、查詢量日漸增長時的應對策略。
當然本書也不會遺漏垃圾收集的相關內容,包括垃圾收集的工作原理、觸發時間以及如何調整垃圾收集的行為。此外,本書也將涉及ElasticSearch狀態診斷的介紹,例如,描述係統段閤並狀況,ElasticSearch在高級API背後是如何工作以及如何限製I/O操作的。然而,本書並不僅限於討論ElasticSearch的底層機製,同時也涵蓋瞭如何改進用戶搜索體驗,例如處理拼寫檢查,高效地輸入自動提示以及如何改進查詢等內容。
除瞭前麵介紹的那些,本書還將指導讀者熟悉ElasticSearch的Java API,並演示它的使用方法,其中不僅包含CRUD(增刪查改)等基本功能,同時也包含集群、索引的維護與操作等高級功能。最後,讀者將通過開發一個用於數據索引的自定義river插件,以及一個在檢索期和索引期用於數據分析的自定義分析插件來深入瞭解ElasticSearch的擴展機製。
本書主要內容第1章介紹Apache Lucene的工作方式,以及ElasticSearch的基本概念,並演示Elastic-Search的內部工作機製。
第2章描述Lucene評分過程是如何工作的,為什麼要進行查詢重寫,以及查詢二次評分(rescore)是如何工作的。除此之外,還將介紹ElasticSearch的批處理API,以及如何使用過濾器(filter)來優化查詢。
第3章描述如何修改Lucene評分,並使用不同的倒排索引格式來改變索引字段的結構。此外還會介紹ElasticSearch的準實時搜索和索引,事務日誌的使用,理解索引的段閤並以及如何調整段閤並來適應應用場景。
第4章介紹以下技術:如何選擇恰當的索引分片及復製(replicas)數量,路由是如何工作的,索引分片機製是如何工作的以及如何影響分片行為。同時還介紹ElasticSearch如何進行係統初始配置,以及當數據量和查詢量急劇增長時如何調整係統配置。
第5章介紹如何為具體應用選擇正確的目錄(directory)實現,什麼是發現(Discovery)、網關(Gateway)、恢復(Recovery)模塊,如何配置這些模塊,以及有哪些令人睏擾的疑難點。最後介紹如何通過ElasticSearch來查看索引段信息,以及如何進行ElasticSearch緩存機製的調優。
第6章介紹JVM垃圾收集的工作原理和重要意義,以及如何對它進行調優。同時還介紹如何控製ElasticSearch的I/O操作數量,什麼是預熱器(warmer)以及如何使用它,最後介紹如何診斷ElasticSearch中的問題。
第7章介紹查詢建議(suggester),它能幫助修正查詢中的拼寫錯誤以及構建高效的自動完成(autocomplete)機製。除此之外,將通過實際的案例展示如何使用不同查詢類型和ElasticSearch的其他功能來提高查詢相關性。
第8章覆蓋ElasticSearch的Java API,不僅包括一些基本API,諸如連接到ElasticSearch集群、單條索引或批量索引、檢索文檔等,而且涵蓋ElasticSearch暴露的一些用於控製集群的API。
第9章通過演示如何開發你自己的河流(river)和語言處理(language)插件來介紹ElasticSearch的插件開發。
閱讀本書的必備資源本書基於ElasticSearch 0.90.x版本,所有範例代碼均能在該版本下正常運行。除此之外,讀者需要一個能發送HTTP請求的命令行工具,如curl,該工具在絕大多數操作係統上是可用的。請記住,本書的所有範例都使用瞭curl,如果讀者想使用其他工具,請注意檢查請求的格式從而保證所選擇的工具能正確解析它。
除此之外,為瞭運行第8章和第9章的範例,要求已安裝JDK,並且需要一個編輯器來開發相關代碼(或者類似Eclipse的Java IDE)。書中這兩章都使用Apache Maven進行代碼的管理與構建。
本書的目標讀者本書的目標讀者是那些雖然熟悉ElasticSearch基本概念但又想深入瞭解其本身,同時也對Apache Lucene、JVM垃圾收集感興趣的ElasticSearch用戶和發燒友。除此之外,想瞭解如何改進查詢相關性,如何使用ElasticSearch Java API,如何編寫自定義插件的讀者,也會發現本書的趣味性和實用性。
如果你是ElasticSearch的初學者,對查詢和索引這些基本概念都不熟悉,那麼你會發現本書的絕大多數章節難以理解,因為這些內容假定讀者已經具備瞭相關背景知識。這種情況下,建議參考Packt齣版社上一本關於ElasticSearch的圖書《ElasticSearch Server》。
客戶支持親愛的讀者,請隨時瀏覽http://www.elasticsearchserverbook.com,這裏列齣瞭本書最新的勘誤錶,以及相關的擴展閱讀。
範例代碼下載如果讀者通過http://www.packtpub.com賬號購買瞭Packt圖書,可直接在本網站下載範例代碼 深入理解ElasticSearch 下載 mobi epub pdf txt 電子書 格式
深入理解ElasticSearch 下載 mobi pdf epub txt 電子書 格式 2024
深入理解ElasticSearch 下載 mobi epub pdf 電子書包裝好,速度快,不過還沒時間看。。。
評分買來送給老婆,她很喜歡
評分活動中收到,還沒看,應該不錯。就是貴瞭點。
評分實話說,翻譯一般。手上有英文電子書,對照瞭一下,其實有很多錶達不準確的地方。
評分幫朋友買的,還不錯.朋友很喜歡.以後還會再買的.
評分實話說,翻譯一般。手上有英文電子書,對照瞭一下,其實有很多錶達不準確的地方。
評分學習ES的必備書籍,可以深入理解大數據的快速查詢技術基礎
評分背著你會有時間再看?
評分正版書籍,搞活動買的很劃算,買書還是要京東或者當當
深入理解ElasticSearch mobi epub pdf txt 電子書 格式下載 2024