Elastic 系統工程師 Joshua Rich 專訪
提到開源搜尋引擎,大家可能馬上想到的是 Apache Lucene。但其實 Elastic 的 Elasticsearch,正是基於 Apache Lucene 架設的搜尋引擎,最近 Elastic 系統工程師 Joshua Rich 來港,正好讓他介紹 Elasticsearch 的特點。
Q:Linuxpilot A:Joshua Rich
Q:Apache Lucene 和 Elasticsearch 有何不同?
A:Lucene 是一個提供全文搜尋功能的函式庫,現如今很多功能先進、性能優異的搜尋服務都是基於 Lucene 架設的,Lucene 同樣是開源的,並且對所有人免費開放。但是 Lucene 僅僅是個函式庫而已,要把 Lucene 玩轉,你先要熟悉 Java 開發才能把 Lucene 運用,更需要在一定程度上去了解 Lucene 運作的原理,才能寫出像樣的搜尋服務。Elasticsearch 同樣採用 Java 編寫,並且在內部使用了 Lucene 來架設索引和提供搜尋功能。其目標是讓全文搜尋變得簡單,開發者可以通過 Elasticsearch 的 RESTFul API,來實現搜尋功能,不必去面對 Lucene 的複雜性。
Q:Elasticsearch 還有什麼不同之處?
A:Elasticsearch 還具備了不少特性,包括分散式的檔案儲存服務,檔案的每個字段都可以被索引和搜尋。另一個是分散式的搜尋引擎,利用 Elasticsearch 可以對數據進行實時的分析。Elasticsearch 能夠輕鬆的進行大規模橫向擴展,支援 PB 級的結構化和非結構化海量數據處理。通過 RESTFul API,你可以用你喜歡的任何一種編程語言,來使用 Elasticsearch 所提供的服務,甚至可以通過命令行如 curl 工具工作。
Q:Elasticsearch 的設定複雜嗎?
A:Elasticsearch 的使用非常簡單,不需要去做什麼特殊的配置,預設的配置就能滿足絕大多數需求。Elasticsearch 盡最大的努力,向新手隱藏搜尋系統的複雜性,因此新手很快就能架設出強大的搜尋功能。大家可以從官網上下載 Elasticsearch,自由的使用甚至修改它,Elasticsearch 遵循 Apache 開源授權,這是一個比較寬鬆的開源授權。隨著對 Elasticsearch 的了解,你會不斷發現它更多強大有趣的功能,並且整個引擎是可靈活配置的,你可以去修改相關配置或者使用不同的模式,對 Elasticsearch 進行「裁剪」,從而使其更加適合自己的業務場景。
Q:簡單的說,Elasticsearch 能做什麼?
A:當你經營一家網上商店,你可以讓你的客戶搜尋你賣的商品。在這種情況下,Elasticsearch 來儲存整個產品目錄和庫存,為客戶提供精準搜尋,可以為客戶推薦相關商品。又例如當你想收集日誌或者交易數據的時候,要分析和挖掘這些數據,尋找趨勢,統計,總結,或異常。在這種情況下,你可以使用 LogStash 或者其他工具收集數據。當這些數據儲存到 Elasticsearch,便可以搜尋和彙總這些數據,找到任何你感興趣的資料。
Q:在網上商店運用上,還有沒有其他例子?
A:當你運行一個價格提醒的平台,可以給客戶提供一些規則。例如我有興趣購買一個特定的電子設備,當該產品的價格,在未來一個月內的價格低於多少錢時,就通知我。在這種情況下,開發者可把供應商的價格,定期儲存到 Elasticsearch 中,使用定時器過濾的能力來匹配客戶的需求,當查詢到價格低於客戶設定的值後給客戶發送通知。
Q:Kibana 可以如何配合 Elasticsearch?
A:當你有商業智能分析的需求時,當然希望快速調查,分析和可視化。我們可以使用 Elasticsearch 來儲存你的數據,然後用 Kibana 建立自定義的儀表板,或者任何你熟悉的語言開發展示界面,並使用 Elasticsearch 的聚合功能,來執行複雜的商業智能與數據查詢。在香港開源年會 HKOSCon 2016上,我亦在 Building an Elastic IoT Pipeline,解析了如何利用 Elasticsearch 的 Beats 平台,有效收集 IoT 各部分的狀態和效能。以及如何配合 Elasticsearch 的工具,將有關數據透過圖像方式呈現。