Elasticsearch是基於Lucene的分布式搜索服務器,它允許用戶使用PB級的數據對非結構化內容進行索引和搜索。在本書中,讀者將學習到有關Elasticsearch 7.0的全面操作秘笈,並了解如何創建和運行復雜的查詢和分析。
本書是Elasticsearch Cookbook一書的第4版,包含有關使用Elasticsearch執行索引映射、聚合和腳本編寫的秘笈,以幫助讀者掌握用於執行日常任務和非常規任務(例如,部署Elasticsearch節點、集成其他工具到Elasticsearch,以及創建不同的可視化結果等)的眾多解決方案和快速技術。讀者將學習到如何安裝Kibana來監視集群,以及如何使用各種插件對Elasticsearch進行擴展。後,本書還介紹了如何將Java、Scala、Python和大數據應用程序(例如Apache Spark和Pig)與Elasticsearch集成在一起,從而創建由增強功能和自定義插件提供支持的高效數據應用程序。
通讀本書之後,你將獲得有關實現Elasticsearch架構的深入知識,並且能夠使用Elasticsearch有效地管理、搜索和存儲數據。
本書讀者
如果你是軟件工程師、大數據基礎架構工程師或Elasticsearch開發人員,你會發現本書對你很有用。本書還將幫助在電子商務和快速消費品(FMCG)行業工作的數據專業人員,他們可以使用Elastic進行指標評估和搜索分析,以獲取更深刻的見解,從而做出更好的業務決策。
如果你已經擁有使用Elasticsearch的經驗,那麼這將有助於你充分利用本書。
內容介紹
第1章“入門”,討論了使用Elasticsearch的基本步驟,包括簡單安裝和雲端部署。本章還介紹了若干種設置案例。
第2章“管理映射”,詳細介紹了數據字段的正確定義,以提高索引和搜索的質量。
第3章“基本操作”,介紹了在Elasticsearch中提取數據並進行管理所需的常見操作。
第4章“搜索功能詳解”,討論了執行搜索、排序和相關API調用。本章討論的API是必不可少的。
第5章 “文本和數字查詢”,介紹了文本和數字字段的Search DSL部分,這是Elasticsearch
搜索功能的核心。
第6章“關繫和地理查詢”,討論了可在相關文檔(子文檔/父文檔和嵌套文檔)和地理位置字段上使用的查詢。
第7章“聚合”,詳細介紹了Elasticsearch的另一功能,即可以對搜索結果執行分析以改善用戶體驗,並深入研究Elasticsearch中包含的信息。
第8章“Elasticsearch中的腳本”,演示了如何使用腳本自定義Elasticsearch,以及如何使用不同的語言在Elasticsearch的不同部分(搜索、聚合和采集)使用腳本功能。本章的重點是Elastic團隊開發的新腳本語言Painless。
第9章“管理集群”,顯示了如何分析集群/節點的行為以了解常見的陷阱。
第10章“備份和還原數據”,討論了管理數據中重要的組成部分之一:備份。它顯示了如何管理分布式備份和快照的還原。
第11章“用戶界面”,介紹了Elasticsearch兩個常見的用戶界面:Cerebro(主要用於管理活動)和Kibana,另外,X-Pack是Elasticsearch的常見UI擴展。
第12章“使用采集模塊”,討論了通過采集管道在Elasticsearch中導入數據的采集功能。
第13章“Java集成”,介紹了如何使用REST和原生協議將Elasticsearch集成到Java應用程序中。
第14章“Scala集成”,介紹了如何使用elastic4s將Elasticsearch集成到Scala中。
elastic4s是一種基於原生Java API的高級類型安全且功能豐富的Scala庫。
第15章“Python集成”,介紹了官方Elasticsearch Python客戶端的用法。
第16章“插件開發”,討論了如何創建原生插件以擴展Elasticsearch功能。本章通過一些示例顯示了插件框架、設置過程以及它們的構建。
第17章“大數據集成”,介紹了如何將Elasticsearch集成到常見的大數據工具中,例如Apache Spark和Apache Pig。
充分利用本書
如果讀者對Java、Scala和Python有基本了解,那麼這對於充分利用本書將是有益的。
下載示例代碼文件
讀者可以從www.packtpub.com下載本書的示例代碼文件。具體步驟如下。
(1)登錄或注冊www.packtpub.com。
(2)選擇Support(支持)選項卡。
(3)單擊Code Downloads&Errata(代碼下載和勘誤表)。
(4)在Search(搜索)框中輸入圖書名稱Elasticsearch 7.0 Cookbook,然後按照屏幕上的說明進行操作。
下載文件後,請確保使用版本解壓縮或解壓縮文件夾:
? WinRAR/7-Zip(Windows繫統)。
? Zipeg/iZip/UnRarX(Mac繫統)。
? 7-Zip/PeaZip(Linux繫統)。
本書的代碼包也已經在GitHub上托管,網址如下,歡迎訪問:
https://github.com/PacktPublishing/Elasticsearch-7.0-Cookbook
如果代碼有更新,則也會在現有GitHub存儲庫上更新。
下載彩色圖像
我們還提供了一個PDF文件,其中包含本書中使用的屏幕截圖/圖表的彩色圖像。可以通過以下地址下載:
https://www.packtpub.com/sites/default/files/downloads/9781789956504_ColorImages.pdf
本書約定
本書中使用了許多文本約定。
(1)CodeInText:表示文本中的代碼字、數據庫表名、文件夾名、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入和Twitter句柄等。以下段落就是一個示例:
有關Python Elasticsearch客戶端的官方說明文檔提供了有關可用於初始化客戶端的多個選項的更詳細說明。其網址如下:
https://elasticsearch-py.readthedocs.io/en/master/index.html
(2)有關代碼塊的設置如下所示:
PUT /myindex
{
"settings": {
"index": {
"number_of_shards": 2,
"number_of_replicas": 1
}
}
}
(3)當希望引起讀者對代碼塊的特定部分的注意時,相關的行或項目以粗體顯示:
searchSourceBuilder.query(query).size(30);
SearchRequest searchRequest = new SearchRequest()
.indices(index).source(searchSourceBuilder)
.scroll(TimeValue.timeValueMinutes(2));
(4)任何命令行輸入或輸出都采用如下所示的粗體代碼形式:
[2019-02-05T21:15:36,311][INFO ][o.e.p.PluginsService ]
[iMacParo.local] loaded plugin [rest-plugin]
[2019-02-05T21:15:38,736][INFO ][o.e.x.s.a.s.FileRolesStore]
[iMacParo.local]
parsed [0] roles from file [/Users/alberto/elasticsear
(5)粗體:術語或重要單詞使用粗體顯示,並且在括號內保留其英文原文。對於菜單或對話框中的界面詞彙,則以原文形式出現,並使用括號添加其中文翻譯,方便讀者對照查看。示例如下:
傳輸操作通常定義為映射(Map)和歸約(Reduce)作業。
在使用Kibana之前,建議加載一些數據集,這些數據集是在安裝中提供的。隻需單擊Add sample data(添加樣本數據)標題下的Load a data set and a Kibana dashboard(加載數據集和Kibana儀表盤)即可打開Add Data to Kibana(添加數據到Kibana)頁面。
(6)本書還使用了以下兩個圖標。
表示警告或重要的注意事項。
表示提示或小技巧。
關於作者
Alberto Paro是一名工程師、項目經理和軟件開發人員。他目前在意大利NTTDATA擔任大數據實踐負責人,負責大數據技術、本地雲和NoSQL解決方案。他喜歡研究與雲和大數據處理、NoSQL數據庫、自然語言處理(NLP)和神經網絡有關的新興解決方案和應用程序。2000年,他畢業於米蘭理工大學計算機科學工程繫。他曾經在多家公司工作,主要使用Scala/Java和Python來開發知識管理解決方案,並使用的大數據軟件開發高級數據挖掘產品。他還花費了大量的時間講授如何有效使用大數據解決方案、NoSQL數據存儲和相關技術。
“如果沒有很多人的支持,那麼我將很難完成這本書。首先,我要感謝我的妻子、孩子(Andrea和Giulia)以及全家人對我的支持。我還要對我好的朋友Mauro和Michele、我的同事以及所有幫助過我和我的家人的人們表示感謝。我要感謝Packt Publishing出版社參與本書開發和制作的每個人。感謝Athikho Sapuni Rishana對於本書給予的指導,感謝審稿人耐心地閱讀了初稿並提供了寶貴的反饋意見。他們的專業精神、謙遜有禮、良好的判斷力和對書籍的熱情令人深表感佩。”
關於審稿人
Craig Brown是一名獨立顧問,為Elasticsearch和其他大數據軟件提供服務。他擁有25年以上的Java核心開發經驗,以及十多年的Elasticsearch經驗。他在機器學習、Hadoop和Apache Spark方面也有良好的實踐經驗,並且是美國猶他州Big Mountain Data用戶組的聯合創始人。他是Elasticsearch和其他大數據主題的發言人。Craig創立了NosqlRevolution LLC,專注於Elasticsearch和大數據服務。他還創立了PicoCluster LLC,這是一個桌面數據中心,致力於對集群計算和大數據框架進行原型化。