天天看點

Elasticsearch大咖說 | Elasticsearch 在手機垂直搜尋業務的應用創新

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 能力賦能給那些沒有機器學習背景的開發者,讓他們能給業務更好的提升。另外一方面,業内也有同行在探索基于機器學習建構索引,這個對于大平台大資料量來說是一個比較新的但很有吸引力的方向。

相關活動

https://developer.aliyun.com/topic/elasticsearch

更多折扣活動,請通路

阿裡雲 Elasticsearch 官網 • 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費

阿裡雲 Elasticsearch 日志增強版,首月六折,年付六折 阿裡雲 Logstash 2核4G首月免費
Elasticsearch大咖說 | Elasticsearch 在手機垂直搜尋業務的應用創新

繼續閱讀