使用 EleasticSearch 做資料分析與報告
21CTO 導讀:結合 Elasticsearch 和 Elastic Stack,我們一起深入瞭解它對大資料平臺和搜尋引擎的提升體驗。
近年來,NoSQL 與大資料技術大爆發,對於開發人員來講,跟上資料庫、搜尋引擎與業務分析至關重要。
目前市面上可用的大資料解決方案很多,比如Amazon CloudSearch,ElasticSearch,Swiftype,Algolia,Searchify,Solr 等,開發者們幾乎被這些工具和解決方案淹沒。
每個解決方案都有他的優缺點。這一次我們把注意力專注在 Elasticsearch 上面,討論它的優點,以及搜尋和用例的要點。
然後我再分享我自己如何利用 Elesticsearch 來建立視覺化工具後生成 Web 報表。
現在我們就開始。
什麼是 ElasticSearch
Elasticsearch 是目前被公認的處理結構化和非結構化資料的最佳全文搜尋引擎之一。
它以 Apache Lucene 為底層基礎,是用 Java 開發的全文搜尋庫。Elasticserch 是一個開源軟體,它是由一群程式員和工程師維護開發的強大工具。
Elasticsearch 的擴充套件專案
Eleasticsearch 的每個專案都值得開發者關注。包括如下:
1、Beats( ofollow,noindex" target="_blank">https://www.elastic.co/products/beats/?r=dz 4)
用來將資料集中化後將資料發到 Logstash。
2、Logstash( https://www.elastic.co/products/logstash/?r=dz4 )
用來轉換和解析來自多個源的資料傳入,並將其傳送到 Elastic 技術棧的核心 ElasticSearch。它正好和上面工具相反。
3、Kibana( https://www.elastic.co/products/kibana/?r=dz4 )
最後我們在 Kibana的幫助下,使用圖表將儲存的資料以視覺化形式表現出來。
可以看到,我們使用 Elasic Stack(技術棧)進行結構化儲存和非結構化儲存以及聚合都非常簡單。
下面,我們深入瞭解為什麼使用 Elastic Search。
Elastic Search 的特點
開發者角度來看 Elastic Search 的優點:
1 Elastic 技術棧中的分散式資料儲存與資料處理系統,可以很方便的擴充套件到數百臺機器,能夠有效節省 CPU 和記憶體資源;
2 使用反向索引技術和最常用的結構化查詢快取,達到快速檢索資料;
3 執行時建立索引
4 將文件劃分為邏輯組的欄位對映
5 對叢集中的節點進行有效負載均衡並複製資料;
6 提供 RESTful API,用來實現索引的建立、讀取、更新、刪除和搜尋操作,另外還有叢集檢查、伺服器節點和索引執行狀態檢測等。
所有這些功能都非常有助於開發實時型平臺,包括搜尋和商業智慧(BI)類應用程式。
ElasticSearch 也非常適合搜尋和分析日誌,幫助我們有效識別 Web 伺服器或應用程式的問題。
ElasticSearch 支援以下型別的動態搜尋 :
1 結構化資料
2 全文搜尋
3 相鄰匹配(它將文件視為“單詞包”,不考慮單詞之間的關係)
4 部分匹配
開發者可以把它們組合在一起,就可以實現查詢的完美匹配。
彈性搜尋資料分析
資料分析的第一步是定義基本目標,從索引收集與彙總資料,然後將它們匯入分析工具中。
我的目標是根據 Elasticsearch 資料製作互動式報表。一個主需求是連線到我的索引,以便進一步彙總資料。當然,可以使用 Kibana 處理視覺化大資料的挑戰。
我需要有一個靈活方法來實時生成索引,這將有助我在Web 應用中能夠生成實時的分析資料。
有一個工具 Flexmonster 幫了我,它用來在客戶端埋點,能夠生成視覺化的報表元件,可以進行資料聚合、過濾和排序,並通過圖表對其進行視覺化。
結果可以用 Excel、PDF 和其它格式共享。
ElasticSearch 和 Pivot 報表入門
為了從資料中獲得洞察力,需要全面瞭解如何使用 ElasticSearch,從 Flexmonster Privot Table 和 資料報表中建立連線。
配置
在 Elasticsearch 的官方文件指導下,我很順利地在本地安裝了 ElasticSearch,也成功連線到了伺服器。
接下來,我在自己的應用程式的客戶端部分配置了 ElasticSearch 的連線。按照軟體包指南中描述的步驟,還啟用了 CORS,
連線到索引伺服器並將資料匯入資料透視表,整個配置過程花了大約15分鐘。整體路線圖包括如下部分:
1、將元件嵌入到應用程式中
2、配置Elasticsearch伺服器
3、建立從Flexmonster到伺服器的連線
我已設法將資料透視表與Angular應用整合,然後連線到 Elasticsearch 例項。此外,我發現它與Elasticsearch 的資料型別相容,包括String(Key只有這種資料型別可用於聚合和排序),Date,Numeric,Boolean,Object和Nested Object。處理業務資料時,數字和日期型別特別有用。可以將數值型欄位放入度量中,而日期欄位可以用作維度和度量。
連線到資料來源後,我為報表定義了一個切片資料,將字串和日期欄位放入行和列,過濾報表,僅能檢視我需要的記錄。
舉例來說,我們可以在實時演示中檢視Kibana航班資料的樣本。
小結
總體而言,Elasticsearch 可以開發者實現對資料複雜的查詢。對我自己而言,Elastic Stack和Flexmonster為構建儀表板和執行臨時分析提供了強大的組合,這些產品可以幫助我們將Web報告和資料視覺化提升到一個新的水平。
相關連結:
Elasticsearch:入門
https://www.elastic.co/webinars/getting-started-elasticsearch
Elasticsearch:指南
https://www.elastic.co/guide/
Flexmonster資料透視表和圖表快速入門
https://www.flexmonster.com/doc/how-to-create-js-pivottable
作者:Veronika Rovnik
譯者:海鵬