前言
建立在分散式系統之上的大數據搜索與採擷應用,是當今IT 業的研究與專案實作熱點之一。在DB-Engines 公佈的2015 年度最受歡迎的資料庫系統中,Elasticsearch 名列前茅。作為開放原始分碼散式檢索與資料處理平台,Elasticsearch 不僅是一個資料庫,它還是一個以Lucene 建置為基礎的開放原始碼、分散式、RESTful 資訊檢索架構。
以Elasticsearch+Logstash+Kibana為基礎的資訊處理架構,為程式設計人員提供了一種分散式可擴充的資訊儲存和全文檢索機制,以及以Logstash 為基礎的記錄檔處理機制、以Kibana為基礎的採擷結果視覺化機制。它不僅能對巨量規模的資料完成分散式索引與檢索, 還能提供資料聚合分析和視覺化。因此, 從實戰的角度掌握Elasticsearch、Logstash、Kibana 的基本使用方法和技巧,很有必要。
大數據這個術語的出現,大概可追溯到以Lucene 為基礎的Apache 開放原始碼專案Nutch。從2009 年開始,大數據開始成為網際網路企業的流行詞彙,也吸引了越來越多的關注。物聯網、雲端運算、行動網際網路、手機與平板電腦、PC 以及遍佈各個角落的各種各樣的感測器,無一不是大數據的來源方或承載方。可以說,大數據就在我們身邊。從阿里巴巴等電子商務資料,到LINE 等即時聊天內容,再到Google、Bing,又到社會網路與臉書、Twitter等,都在生產、承載著大數據。隨著資訊處理量的增大,對大數據的分散式儲存、快速搜索與採擷顯得特別必要。舉例來說,採擷使用者的行為習慣和喜好,從淩亂紛繁的大數據背後找到符合使用者興趣和習慣的產品和服務,並對產品和服務進行有針對性的調整和最佳化,本身就蘊含著極大的商機。但是,傳統的以關聯式資料庫管理系統為基礎的方法,在高效處理大數據時顯得有些力不從心。雖然開放原始碼的全文檢索工具Lucene 能處理非結構化和半結構化的資訊,但其某些版本在分散式處理方面的不足限制了它在大數據方面的應用。我們希望找到一個快速的分散式資訊檢索解決方案,它是一個零設定和易於上手的全文檢索模式,能夠簡單地使用JSON 透過HTTP 索引資料,更希望它支援分散式處理並支援系統擴充,能夠即時搜索,並且穩定、可靠。
Elasticsearch 是一個以Lucene 為基礎的開放原始分碼散式資訊檢索架構和全文檢索搜尋工具。建置在Elasticsearch 基礎上的記錄檔處理工具Logstash和資訊視覺化元件Kibana,能有效銜接並高效處理由Elasticsearch 索引的分散式資料,三者優勢互補,各司其職,共同完成網路大數據分散式儲存、倒排索引、全文檢索、Web 記錄檔處理、採擷結果視覺化這一整套的資訊處理流程。目前這方面的資料很少,僅有的幾部譯著所提及的Elasticsearch 版本較舊,且沒有任何有關Logstash 和Kibana 的書籍。因此我們有了一個想法,將Elasticsearch、Logstash、Kibana(統稱為ELK)連袂奉獻給廣大軟體開發者,幫助他們儘快熟悉ELK 架構,並建置自己的Web 應用程式,完成對分散式資訊的檢索與分析工作。
本書強調實作,內容新穎,條理清晰,組織合理。透過實戰說明的方式,讓讀者更進一步地了解ELK 架構的實現細節。全書內容涵蓋ELK 簡介、文件索引與處理、資訊檢索與過濾、資訊統計與分析、以Java 用戶端為基礎的Elasticsearch 功能實現、Elasticsearch 設定與管理、以Logstash 為基礎的網路記錄檔處理、以Kibana 為基礎的分析結果視覺化、應用實例等多個部分。
全書由高凱提出寫作大綱,第1 章和第6 章由高凱撰寫並完成全書彙整和審稿工作, 其餘各章均由高莘撰寫, 其中, 第1 章概述Elasticsearch、
Logstash、Kibana 的主要功能, 對相關的一些概念進行簡介, 並從實用
的角度出發,透過對實例的說明,介紹索引、檢索的實現機制;第2 章對
Elasticsearch 中的索引、對映等說明;第3 章介紹Elasticsearch 中的檢索功
能;第4 章介紹以Facets、Aggregations 為基礎的資料聚合與統計功能;第5章從專案實作的角度,介紹針對Java 用戶端的Elasticsearch 部分功能的設計與實現;第6 章介紹Elasticsearch 的設定及一些進階功能、監控等的使用;第7 章介紹記錄檔處理及Logstash 的應用;第8 章介紹以Kibana 為基礎的視覺化技術;第9 章列出一個綜合應用實例,該實例從網頁擷取、處理、儲存、索引、記錄檔處理、視覺化展示等入手,介紹了以ELK 為基礎的分散式資訊檢索與記錄檔採擷解決方案。
本書的順利完成也得益於參閱了大量的相關工作及研究成果,部分內容來自Elasticsearch、Logstash、Kibana 的官方文件。在寫作過程中,也參考了相關文獻和網際網路上許多熱心網友提供的素材,在此謹向這些文獻的作者、熱心網友以及為本書提供幫助的老師,特別是那些由於篇幅所限未及在參考文獻中提及的相關文獻的作者和網站,致以誠摯的謝意和崇高的敬意。
由於我們的學識、功力均有限,書中不妥之處在所難免,懇請讀者們批評指正。
繁體版說明:
本書使用Elasticsearch、Kibana 及Logstash, 目前其介面支援簡體中
文,因此本書部分示範圖為簡體中文介面。