Elasticsearch 作為一個分佈式、高擴展、實時的搜索與數據分析引擎,因其輕量級、穩定、可靠、快速等特性受到越來越多開發者的青睞,在搜索、日誌分析、運維監控和安全分析等領域得到廣泛應用。阿里雲 Elasticsearch 技術團隊,深度採訪了來自阿里巴巴、vivo、攜程、eBay 等知名公司的技術專家,推出了 Elasticsearch 大咖說系列專題,為廣大開發者提供技術入門與進階的經驗分享,以及最佳應用實踐參考。
分享嘉賓
楊振濤
vivo 互聯網搜索引擎架構師
vivo 是一個專注於智能手機領域的知名品牌,而 vivo 互聯網為 vivo 智能手機用戶提供極致的互聯網產品和服務。從 Elasticsearch 2.1.1版本開始,到目前,vivo 互聯網已經使用了 200 多個 Elasticsearch 集群來支撐全球 2 億多臺手機每天的各種搜索請求,涵蓋了 vivo 的應用商店、遊戲、音樂、主題、壁紙、鈴聲等各種手機服務背後的搜索服務,也包括產品配件、售後、FAQ 等企業門戶官網的搜索請求。
一、ES技術養成之路
話題1:如何學習 Elasticsearch 及相關技術棧的知識
從兩個方面說,一是以官方提供的入門和參考文檔為主,因為業內現在 Elasticsearch 相關的資料相對來說比較豐富,但是想要跟上官方最新版本的節奏以及考慮權威性,還是官方的參考文檔和有關的手冊會比較靠譜;
另一方面,建議可以積極參與社區的一些活動,比如國內的中文社區有提供一些官方文檔的中文版翻譯,可以一定程度上降低學習門檻。另外國內的社區活動相對是比較豐富的,在一些一二線城市都有本地的技術沙龍活動,大家可以積極參加和交流學習。
二、 Elasticsearch 從業者的職業發展
話題2:對 Elasticsearch 開發者技術發展方向的建議
Elasticsearch 開發者大致可以分為三類:
第一類,是做垂直搜索業務的開發者。就我個人而言,我是從 1.0 版本開始接觸的,最早是做垂直搜索業務,Elasticsearch 能幫我們快速上手搜索業務。如果你想在搜索業務持續精進,深入掌握 Elasticsearch 是很好的方式,因為 Elasticsearch 底層使用的是Lucene,加上它的分佈式系統架構,這都是做搜索引擎的過程中,遲早都要接觸的。Elasticsearch 是一個成熟的開源項目,從它的源代碼可以學習到很多分佈式系統知識,包括各種線程池的設計,以及多個節點間的協同,給搜索從業者提供了一個範本,即使你業務規模大到一定程度,不再使用 Elasticsearch ,轉為自行開發,它的系統原理和 Elasticsearch 也可能基本是一致的。
另一類 Elasticsearch 開發者,已經分化到不同業務領域,比如做安全分析、日誌分析、源代碼搜索等等。他們對 Elasticsearch 的瞭解是階段性的, Elasticsearch 作為一個搜索的解決方案,從數據索引到檢索、查詢和最後的排序,都能夠很好地支撐。如果開發者希望他的業務有更好的提升的話,還得持續加深研究,甚至可以考慮考取 Elastic 官方認證,來給自身職業進行加分。
還有一類開發者,當公司的 Elasticsearch 集群發展到一定規模後,公司出於資源使用率和集群穩定性及可用性考慮,可能會自研 Elasticsearch 服務化平臺,對所有 Elasticsearch 集群進行管控和資源使用率優化。對這一類開發者,我們建議他們對 Elasticsearch 底層做更深入的研究,可能需要為業務方做定製化的插件開發,甚至做一些基礎研發,替換掉官方的某個模塊,包括通過 Docker 和 K8S 實現容器化。
三、 Elasticsearch 應用實踐
話題3:所在團隊業務背景和 Elasticsearch 應用介紹
Elasticsearch 作為垂搜引擎的抉擇
從 2014 年開始,我們在 vivo 開始做垂直搜索業務,典型場景包括:應用商店、遊戲中心、官方商城、鈴聲、壁紙和主題等,因為手機上有很多內容資源需要分發給用戶,搜索是用戶獲取資源的非常重要的方式。在安卓生態蓬勃發展的時期,有兩三百萬 APP,搜索功能對用戶體驗就至關重要,對遊戲或 APP 開發者來說,搜索對提升他們內容的分發效率也是很重要的渠道,搜索在整個平臺上的分發量超過了 8 成。所以我們從那個時候開始發力做垂直搜索。現在回過頭來看,很慶幸當時非常明智的選擇了 Elasticsearch,如果當時選擇了其他技術棧,現在很可能會經歷一個替換的過程。
在垂搜領域對 Elasticsearch 做定製化改造
vivo 互聯網的垂直搜索業務剛開始用 Elasticsearch 時,從 0 到 1 的過程沒有太大挑戰,很快就能實現垂搜的基本功能。但是一旦實現了這個功能之後,搜索引擎需要持續優化迭代,大家會發現諸如分詞效果不好,數據召回率或準確率不夠等方面的問題。數據索引、檢索以及排序這三個方面都有做深入的干預。因此把 Elasticsearch 作為一個底層快速檢索和粗排工具,利用 Elasticsearch 做首輪召回,然後再通過後續其他自研系統做精排(二次排序),實現更精細的業務邏輯。這是我們遇到的第一大挑戰,我相信在業界的垂搜項目,大概率會經歷這樣一個過程。經歷過這樣的定製化改造後,就可以根據用戶點擊行為等評價指標做持續性優化。
四、 Elasticsearch 技術前瞻
話題4: Elasticsearch 和數據可視化的結合
在監控運維領域,需要通過數據面板將數據結果呈現給開發者或其他角色去查看,之前大家用 Grafana 比較多,也有部分項目會使用 Kibana。據我們瞭解,國內開發者者和國外相比,在用戶體驗的需求上,可能存在差異。
國外開發者可能更偏好 Kibana,既可以通過拖拽實現查詢,也可以寫一些簡單表達式實現高級查詢,然後快速得到可視化面板。
但在國內,特別是非技術人員和大數據開發者,不太習慣使用表達式的方式來高度定製,更習慣於拖拽類的,或是表達式定製類的。在未來希望能夠考慮到開發者不同偏好群體的習慣,對目前功能做一些區隔處理。另外,國內的可視化項目,特別是數字化大屏,需要非常立體和豐富的展現,Kibana 對這方面需求可以多做一些考量。
話題5: Elasticsearch 和 AI 的結合
目前我們在 Github 看到一些 Elasticsearch 和 AI 結合的開源項目,比如嘗試使用 Learn to Rank,使用機器學習去優化排序,包括 Elastic 官方也在增強這方面的能力。我覺得 AI 的部分比較難做成像 Elasticsearch 功能化的部分那樣開箱即用,因為需要開發者對機器學習模型有基本的認知,知道模型的輸入和輸出是什麼,優化點是哪個部分。我覺得這是未來可以加大投入的地方,如何將 AI 能力賦能給那些沒有機器學習背景的開發者,讓他們能給業務更好的提升。另外一方面,業內也有同行在探索基於機器學習構建索引,這個對於大平臺大數據量來說是一個比較新的但很有吸引力的方向。
相關活動
更多折扣活動,請訪問阿里雲 Elasticsearch 官網
• 阿里雲 Elasticsearch 商業通用版,1核2G首月免費
• 阿里雲 Elasticsearch 日誌增強版,首月六折,年付六折
• 阿里雲 Logstash 2核4G首月免費