關(guān)于我們
書單推薦
新書推薦
|
Elasticsearch權(quán)威指南 基于elasticsearch7.x編寫,全面、準(zhǔn)確地講解elasticsearch的安裝、開發(fā)、技術(shù)原理、生產(chǎn)環(huán)境的性能調(diào)優(yōu)等內(nèi)容。適合有意從事搜索引起、大數(shù)據(jù)、商業(yè)智能等行業(yè)的入門人員學(xué)習(xí)參考,也是資深技術(shù)人員很好的一本參考書籍。 我在華為工作十多年,一直從事公司核心產(chǎn)品和項(xiàng)目的研發(fā)工作,后來加入中興,直到今日我仍然在堅(jiān)持從事研發(fā)工作。我始終認(rèn)為,技術(shù)是個(gè)人立身之本、公司發(fā)展之能、社會進(jìn)步之源。 我與本書作者相識已久。他于2013年就以項(xiàng)目第一負(fù)責(zé)人身份,主持研發(fā)了江蘇省省級科研項(xiàng)目“基于物聯(lián)網(wǎng)的智能輸液系統(tǒng)”,領(lǐng)導(dǎo)團(tuán)隊(duì)攻克技術(shù)難點(diǎn),順利通過了專家的鑒定。我深知他是一位謙虛低調(diào),甚至可以說是淡泊名利,但技術(shù)超群,追逐技術(shù)完美和至高點(diǎn)的人。尤其是在大數(shù)據(jù)和商業(yè)智能領(lǐng)域,本書作者深耕多年,可以說是該領(lǐng)域難得的“掃地僧”。 當(dāng)本書作者找我寫推薦序時(shí),我心情激動,受寵若驚!當(dāng)拿到尚未正式出版的書稿時(shí),本著對讀者負(fù)責(zé)的態(tài)度,我花了三天時(shí)間大致通讀了一遍。本書通俗易懂的講述方式,對Elasticsearch介紹的深度與廣度,超出了所有我閱讀過的關(guān)于Elasticsearch的書籍。作者敬業(yè)、務(wù)實(shí)的作風(fēng)令我敬服。 本書全面涵蓋Elasticsearch的技術(shù),對初學(xué)者來說是一本實(shí)戰(zhàn)類的入門和進(jìn)階書籍,對資深技術(shù)和運(yùn)維人員是一本優(yōu)秀的工具書。同時(shí),本書穿插著作者獨(dú)到的技術(shù)見解,集作者十年大數(shù)據(jù)經(jīng)驗(yàn)之大成。 我向廣大讀者強(qiáng)烈推薦本書。我相信,通過閱讀本書,讀者的Elasticsearch開發(fā)能力將會得到提升。 中興高級技術(shù)專家馬士龍2020年5月 習(xí)近平同志指出: “誰掌握了數(shù)據(jù),誰就掌握了主動權(quán)!边M(jìn)入21世紀(jì),以互聯(lián)網(wǎng)、大數(shù)據(jù)、商業(yè)智能為代表的新一代信息技術(shù)迅猛發(fā)展,給世界經(jīng)濟(jì)的發(fā)展帶來了新的契機(jī)。大數(shù)據(jù)被譽(yù)為未來的石油,是21世紀(jì)最為珍貴的財(cái)產(chǎn)。 大數(shù)據(jù)領(lǐng)域需要解決以下三個(gè)問題。 (1) 如何存儲數(shù)據(jù) 傳統(tǒng)的關(guān)系數(shù)據(jù)庫(MySQL、Oracle和Access等)主導(dǎo)了20世紀(jì)的數(shù)據(jù)存儲模式,但當(dāng)數(shù)據(jù)量達(dá)到太字節(jié)級,甚至拍字節(jié)級時(shí),關(guān)系數(shù)據(jù)庫表現(xiàn)出了難以解決的瓶頸問題。為了解決海量數(shù)據(jù)存儲和分布式計(jì)算問題,Google Lab提出了Map/Reduce 和 Google File System(GFS)解決方案,Hadoop作為其中一個(gè)優(yōu)秀的實(shí)現(xiàn)框架迅速得到了業(yè)界的認(rèn)可和廣泛應(yīng)用。但Hadoop的存儲模式?jīng)Q定了其并不支持對數(shù)據(jù)的實(shí)時(shí)檢索和計(jì)算。還有其他的替代方案嗎?為何不嘗試Elasticsearch的分布式存儲功能? (2) 如何檢索數(shù)據(jù) 在互聯(lián)網(wǎng)時(shí)代的今天,信息的價(jià)值在很大程度上取決于其是否可實(shí)時(shí)傳播和獲取。在龐大的數(shù)據(jù)倉庫中,如何快速獲取少量有用的數(shù)據(jù)是必須解決的問題。數(shù)據(jù)的實(shí)時(shí)獲取能力取決于數(shù)據(jù)的存儲格式。有什么簡單易用的實(shí)時(shí)數(shù)據(jù)獲取方案嗎?為何不嘗試Elasticsearch的實(shí)時(shí)搜索功能? (3) 如何展現(xiàn)數(shù)據(jù) 存儲數(shù)據(jù)和檢索數(shù)據(jù)是最終目的嗎?當(dāng)然不是!數(shù)據(jù)的真正價(jià)值和最終目的是為商業(yè)決策提供有力支撐。為此,必須挖掘出數(shù)據(jù)的內(nèi)在規(guī)律,并用友好的形式呈現(xiàn)在很可能并不懂技術(shù)的決策者面前。什么樣的數(shù)據(jù)展現(xiàn)形式最有說服力,最容易為決策者所接受和理解?毫無疑問是圖和表。正所謂千言萬語不如一張圖!有什么現(xiàn)成的數(shù)據(jù)挖掘和可視化方案嗎?為何不嘗試基于Elasticsearch的可視化平臺Kibana? 本書目的 通過閱讀本書,讀者可以全面掌握Elasticsearch的相關(guān)技術(shù),使用Elasticsearch解決上述三個(gè)問題,并掌握作者十多年積累的大數(shù)據(jù)處理經(jīng)驗(yàn)和技巧,成為大數(shù)據(jù)高手。 本書內(nèi)容 本書基于Elasticsearch 7編寫,共14章,前12章全面介紹Elasticsearch的安裝部署、開發(fā)應(yīng)用、性能調(diào)優(yōu)、集群監(jiān)控、設(shè)計(jì)原理、SQL接口等核心內(nèi)容。第13章介紹基于Elasticsearch的可視化平臺Kibana的基礎(chǔ)內(nèi)容。第14章介紹一個(gè)實(shí)戰(zhàn)案例。前言Elasticsearch權(quán)威指南各章具體內(nèi)容如下。 第1章介紹Elasticsearch的基本概念和基礎(chǔ)操作,主要是讓讀者快速體驗(yàn)Elasticsearch的功能,對Elasticsearch有一個(gè)直觀和大體的了解。 第2章詳細(xì)介紹Elasticsearch的安裝、啟動和參數(shù)配置。本章關(guān)于參數(shù)配置部分的內(nèi)容,可以直接用于生產(chǎn)環(huán)境的集群性能調(diào)優(yōu),讀者可仔細(xì)閱讀這部分內(nèi)容,并細(xì)心體會。 第3章介紹Elasticsearch所遵循的API規(guī)范,為后續(xù)API相關(guān)部分的內(nèi)容介紹打下基礎(chǔ)。 第4~9章詳細(xì)介紹Elasticsearch的各種API功能和使用方法,幾乎每種API都配有示例。這部分內(nèi)容是本書的重點(diǎn),也是讀者在實(shí)際工作中應(yīng)用最多的。 第10章介紹Elasticsearch的查詢語言Query DSL。Query DSL是Elasticsearch特定的查詢語言,所有的查詢API都支持和遵循Query DSL約定的語法。 第11章介紹Elasticsearch所支持的SQL接口。SQL接口是比Query DSL更友好、更通用的一種接口形式,是Elasticsearch未來重點(diǎn)發(fā)展的一個(gè)方向。 第12章介紹搜索引擎的原理和Elasticsearch的分布式設(shè)計(jì)原理。通過閱讀本章內(nèi)容讀者可進(jìn)一步理解Elasticsearch的內(nèi)部機(jī)制。 第13章介紹Elasticsearch的可視化平臺Kibana的基礎(chǔ)內(nèi)容,讓讀者對Kibana有一個(gè)基本的理解。 第14章介紹一個(gè)實(shí)戰(zhàn)案例,讓讀者進(jìn)一步理解如何應(yīng)用Elasticsearch進(jìn)行系統(tǒng)設(shè)計(jì)。 本書特色 重點(diǎn)介紹可直接用于工作中的Elasticsearch的應(yīng)用開發(fā)方法和技巧。 通過突出的形式呈現(xiàn)作者多年實(shí)際使用Elasticsearch的心得體會。 對書中代碼進(jìn)行詳細(xì)注釋,降低閱讀門檻。 通過圖解的形式介紹Elasticsearch復(fù)雜的內(nèi)部設(shè)計(jì)原理和實(shí)現(xiàn)機(jī)制。 敘述方式通俗易懂。 本書讀者 Elasticsearch的入門人員。 想深入了解Elasticsearch的技術(shù)人員。 準(zhǔn)備從事或正在從事搜索引擎技術(shù)工作的技術(shù)人員。 準(zhǔn)備從事或正在從事大數(shù)據(jù)存儲、搜索、分析工作的技術(shù)人員。 Elasticsearch集群運(yùn)維人員。 勘誤和支持 在互聯(lián)網(wǎng)時(shí)代,技術(shù)日新月異。有可能你剛買的書還沒閱讀完,書中涉及的技術(shù)就被升級,甚至被淘汰了。加之筆者水平有限,時(shí)間倉促,書中不可避免地會存在遺漏,懇請讀者將遇到的問題或建議反饋給出版社,我們對此萬分期待。 作者2020年5月于上海 工學(xué)碩士、高級架構(gòu)師、高級程序員(國家工信部認(rèn)證)、江蘇省級科研項(xiàng)目負(fù)責(zé)人(基于物聯(lián)網(wǎng)的智能輸液系統(tǒng),編號BC2012071。在大數(shù)據(jù)平臺、數(shù)據(jù)倉庫、實(shí)時(shí)統(tǒng)計(jì)、可視化等大數(shù)據(jù)領(lǐng)域具有深度整合能力。
第1章快速入門1 1.1基本概念1 1.2安裝部署4 1.3開始使用集群6 1.3.1集群健康信息6 1.3.2列出集群中的索引信息7 1.3.3創(chuàng)建一個(gè)索引8 1.3.4索引和查詢文檔8 1.3.5刪除索引9 1.4修改數(shù)據(jù)10 1.4.1索引和覆蓋文檔10 1.4.2更新文檔11 1.4.3刪除文檔12 1.4.4批量操作12 1.5探索數(shù)據(jù)12 1.5.1加載數(shù)據(jù)集13 1.5.2搜索API13 1.5.3Elasticsearch查詢語言15 1.5.4搜索文檔17 1.5.5條件過濾21 1.5.6聚合查詢22 第2章安裝部署27 2.1安裝JDK27 2.2安裝Elasticsearch28 2.2.1調(diào)整Linux系統(tǒng)的相關(guān)參數(shù) 設(shè)置 28 2.2.2創(chuàng)建用戶28 2.2.3下載Elasticsearch29 2.3配置Elasticsearch29目錄Elasticsearch權(quán)威指南 2.3.1配置文件的位置30 2.3.2配置文件的格式30 2.3.3環(huán)境變量替換30 2.3.4設(shè)置JVM參數(shù)31 2.3.5安全設(shè)置31 2.3.6創(chuàng)建密鑰庫32 2.3.7列出密鑰庫中的設(shè)置項(xiàng)32 2.3.8添加字符串設(shè)置33 2.3.9添加文件設(shè)置33 2.3.10刪除設(shè)置屬性33 2.3.11可重載的安全設(shè)置33 2.3.12日志配置33 2.3.13配置日志級別35 2.3.14JSON日志格式37 2.4跨集群復(fù)制設(shè)置(用于多個(gè)集群間的數(shù)據(jù)恢復(fù))37 2.4.1遠(yuǎn)程恢復(fù)設(shè)置37 2.4.2高級遠(yuǎn)程恢復(fù)設(shè)置37 2.4.3索引生命周期管理設(shè)置38 2.4.4序列號設(shè)置38 2.4.5監(jiān)控功能設(shè)置38 2.4.6一般的監(jiān)控設(shè)置38 2.4.7監(jiān)控收集設(shè)置39 2.4.8本地導(dǎo)出器設(shè)置40 2.4.9HTTP導(dǎo)出器設(shè)置40 2.4.10XPack監(jiān)控TLS/SSL相關(guān)設(shè)置42 2.4.11XPack監(jiān)控TLS/SSL密鑰和可信證書設(shè)置42 2.4.12PEM編碼文件42 2.5重要的Elasticsearch配置43 2.5.1數(shù)據(jù)和日志存放目錄43 2.5.2集群名稱43 2.5.3節(jié)點(diǎn)名稱44 2.5.4網(wǎng)絡(luò)設(shè)置44 2.5.5重要節(jié)點(diǎn)發(fā)現(xiàn)和集群初始化設(shè)置44 2.5.6Heap設(shè)置45 2.5.7JVM heap dump目錄設(shè)置46 2.5.8GC日志設(shè)置46 2.5.9臨時(shí)文件存儲目錄46 2.5.10JVM致命錯誤日志設(shè)置47 2.6重要的系統(tǒng)參數(shù)設(shè)置47 2.6.1配置系統(tǒng)設(shè)置47 2.6.2禁用交換區(qū)48 2.6.3文件描述符49 2.6.4虛擬內(nèi)存49 2.6.5線程數(shù)量限制50 2.6.6DNS緩存設(shè)置50 2.6.7JNA臨時(shí)目錄掛載位置50 2.7啟動檢查50 2.7.1Heap大小檢查51 2.7.2文件描述符檢查51 2.7.3內(nèi)存鎖定檢查51 2.7.4線程數(shù)限制核查52 2.7.5最大文件大小檢查52 2.7.6最大虛擬內(nèi)存檢查52 2.7.7最大mmap映射區(qū)域數(shù)量檢查53 2.7.8JVM模式檢查53 2.7.9JVM垃圾收集機(jī)制檢查53 2.7.10系統(tǒng)調(diào)用過濾器檢查53 2.7.11發(fā)現(xiàn)功能配置檢查54 2.8啟動和停止Elasticsearch54 2.9集群水平擴(kuò)展54 第3章API規(guī)范56 3.1多索引56 3.2日期數(shù)學(xué)格式56 3.3通用選項(xiàng)58 3.3.1格式化搜索結(jié)果58 3.3.2可讀輸出58 3.3.3格式化日期值58 3.3.4返回信息過濾59 3.3.5展開設(shè)置63 3.3.6布爾值64 3.3.7數(shù)字值64 3.3.8時(shí)間單位64 3.3.9數(shù)據(jù)單位65 3.3.10縮略處理65 3.3.11距離單位65 3.3.12模糊性66 3.3.13啟用堆棧跟蹤66 3.3.14查詢字符串中的請求正文67 3.3.15ContentType要求67 3.4基于URL的訪問控制67 第4章操作文檔69 4.1讀寫文檔69 4.1.1基本寫模型70 4.1.2寫流程錯誤處理70 4.1.3基本讀模型71 4.1.4讀流程錯誤處理71 4.1.5一些簡單的知識點(diǎn)72 4.2索引API72 4.2.1自動創(chuàng)建索引73 4.2.2ID自動生成74 4.2.3路由75 4.2.4分發(fā)75 4.2.5等待活動分片75 4.2.6detect_noop參數(shù)76 4.3GET API76 4.3.1實(shí)時(shí)性77 4.3.2字段選擇77 4.3.3存儲字段77 4.3.4直接獲取_source 78 4.3.5路由78 4.3.6preference參數(shù)79 4.3.7refresh參數(shù)79 4.3.8分發(fā)79 4.3.9版本支持79 4.4刪除API79 4.5查詢刪除80 4.5.1URL參數(shù)82 4.5.2返回體82 4.5.3任務(wù)API83 4.5.4取消任務(wù)API84 4.5.5動態(tài)調(diào)整API85 4.5.6切片85 4.6更新API87 4.6.1使用script更新88 4.6.2部分字段更新89 4.6.3避免無效更新89 4.6.4upsert元素90 4.6.5scripted_upsert參數(shù)91 4.6.6doc_as_upsert 參數(shù)92 4.7查詢更新92 4.7.1URL參數(shù)95 4.7.2請求體95 4.7.3任務(wù)API96 4.7.4取消任務(wù)API96 4.7.5動態(tài)調(diào)整API96 4.7.6切片96 4.7.7獲取新屬性96 4.8MGet API98 4.8.1_source 過濾99 4.8.2存儲字段100 4.8.3路由100 4.8.4重新索引101 4.9跨集群索引106 4.10批量操作API107 4.10.1路由110 4.10.2更新110 4.11Term向量111 4.11.1返回值111 4.11.2Term過濾112 4.11.3行為分析114 4.11.4獲取多個(gè)文檔的Term向量118 4.12refresh參數(shù)119 4.12.1如何選擇refresh 的值120 4.12.2強(qiáng)制刷新120 4.13樂觀并發(fā)控制121 第5章搜索數(shù)據(jù)123 5.1基本概念和機(jī)制123 5.2搜索API125 5.3URI模式125 5.4Body模式126 5.4.1Explain 參數(shù)128 5.4.2折疊結(jié)果131 5.4.3對結(jié)果分頁133 5.4.4高亮結(jié)果133 5.4.5索引加權(quán)146 5.4.6命中文檔嵌套146 5.4.7分?jǐn)?shù)值過濾154 5.4.8查詢命名154 5.4.9post_filter過濾155 5.4.10分片選擇157 5.4.11重排序158 5.4.12腳本字段160 5.4.13滾動查詢161 5.4.14search_after參數(shù)164 5.4.15搜索類型166 5.4.16排序166 5.4.17_source 字段過濾173 5.4.18存儲字段174 5.4.19total返回值詳解175 5.4.20版本176 5.5返回搜索分片信息177 5.6Count API177 5.7Validate API178 5.8調(diào)試搜索請求179 第6章聚合180 6.1度量值聚合180 6.1.1均值聚合181 6.1.2帶權(quán)重的均值聚合183 6.1.3計(jì)數(shù)聚合185 6.1.4統(tǒng)計(jì)聚合187 6.1.5地理范圍聚合188 6.1.6地理距離質(zhì)心聚合189 6.1.7最大值聚合、最小值聚合、和值聚合192 6.1.8百分位數(shù)聚合192 6.1.9百分比排名聚合197 6.1.10腳本聚合198 6.1.11頂部命中聚合200 6.1.12單值度量聚合205 6.1.13中位數(shù)絕對偏差聚合206 6.2存儲桶聚合207 6.2.1鄰接矩陣聚合207 6.2.2區(qū)間聚合209 6.2.3日期區(qū)間聚合214 6.2.4IP區(qū)間聚合217 6.2.5Term聚合221 6.2.6直方圖聚合227 6.2.7過濾器聚合231 6.2.8多過濾器聚合232 第7章查看API235 7.1查看子目錄235 7.2應(yīng)用實(shí)例及參數(shù)236 7.2.1v參數(shù)236 7.2.2help參數(shù)236 7.2.3h參數(shù)236 7.2.4常用接口匯總236 第8章集群 API238 8.1節(jié)點(diǎn)過濾238 8.2節(jié)點(diǎn)類型239 8.3常用API241 8.3.1查看集群及節(jié)點(diǎn)信息241 8.3.2動態(tài)更新集群設(shè)置242 8.3.3重置路由242 第9章索引 API244 9.1創(chuàng)建索引API244 9.1.1索引設(shè)置244 9.1.2映射245 9.1.3別名245 9.2刪除索引246 9.3判斷索引是否存在246 9.4打開關(guān)閉索引246 9.5收縮索引246 9.6映射247 9.6.1數(shù)據(jù)類型248 9.6.2映射屬性設(shè)置253 第10章特定域查詢語言(DSL)258 10.1查詢和過濾上下文258 10.1.1查詢上下文258 10.1.2過濾上下文258 10.2匹配所有文檔259 10.3全文檢索260 10.3.1匹配查詢260 10.3.2模糊匹配260 10.3.3短語匹配查詢261 10.3.4查詢字符串261 第11章SQL接口265 11.1功能體驗(yàn)265 11.2術(shù)語和約定266 11.3SQL REST API267 11.3.1返回?cái)?shù)據(jù)格式267 11.3.2過濾結(jié)果269 11.3.3支持的參數(shù)270 11.4SQL Translate API270 11.5SQL語法介紹271 11.5.1詞法結(jié)構(gòu)271 11.5.2SQL命令275 第12章Elasticsearch原理剖析283 12.1為什么需要搜索引擎283 12.2搜索引擎雛形283 12.3搜索引擎實(shí)現(xiàn)原理283 12.3.1分析284 12.3.2Lucene倒排索引284 12.3.3搜索過程284 12.3.4結(jié)果排序286 12.4分布式原理287 12.4.1分布式索引過程288 12.4.2分布式檢索過程288 12.4.3分布式局部更新文檔288 12.5節(jié)點(diǎn)發(fā)現(xiàn)和集群形成機(jī)制289 12.5.1集群形成過程289 12.5.2重要配置291 第13章Kibana入門介紹292 13.1安裝Kibana292 13.1.1下載Kibana292 13.1.2簡單配置Kibana292 13.1.3啟動Kibana293 13.2基礎(chǔ)操作293 13.2.1加載樣例數(shù)據(jù)集293 13.2.2探索航班數(shù)據(jù)集294 13.2.3過濾數(shù)據(jù)295 13.2.4查詢數(shù)據(jù)295 13.2.5探索數(shù)據(jù)296 13.2.6編輯可視化組件297 13.3構(gòu)建Dashboard298 13.3.1導(dǎo)入樣例數(shù)據(jù)298 13.3.2定義索引模式300 13.3.3可視化組件介紹302 13.3.4構(gòu)建Dashboard302 第14章構(gòu)建集約化日志管理平臺305 14.1Elastic stack介紹305 14.2日志的特征305 14.2.1日志的重要性305 14.2.2日志的特征306 14.2.3日志的復(fù)雜性306 14.3集約化解決方案306 附錄A參考資料及網(wǎng)址309 附錄B中文分詞算法介紹310附錄CHead安裝312
你還可能感興趣
我要評論
|