暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch大咖说 | vivo:Elasticsearch 在手机垂直搜索业务的应用创新

搜索与推荐技术 2020-03-23
348

Elasticsearch作为一个分布式、高扩展、实时的搜索与数据分析引擎,因其轻量级、稳定、可靠、快速等特性受到越来越多开发者的青睐,在搜索、日志分析、运维监控和安全分析等领域得到广泛应用。阿里云Elasticsearch技术团队,深度采访了来自阿里巴巴、vivo、携程、eBay等知名公司的技术专家,推出了Elasticsearch大咖说系列专题,为广大开发者提供技术入门与进阶的经验分享,以及最佳应用实践参考。




 分享嘉宾

杨振涛

vivo    互联网搜索引擎架构师

vivo是一个专注于智能手机领域的知名品牌,而vivo互联网为vivo智能手机用户提供极致的互联网产品和服务。从Elasticsearch 2.1.1版本开始,到目前,vivo互联网已经使用了200多个Elasticsearch集群来支撑全球2亿多台手机每天的各种搜索请求,涵盖了vivo的应用商店、游戏、音乐、主题、壁纸、铃声等各种手机服务背后的搜索服务,也包括产品配件、售后、FAQ等企业门户官网的搜索请求。


受访时间:2019年12月





1

ES技术养成


/ 话题1 /


如何学习ES及相关技术栈的知识?


从两个方面说,一是以官方提供的入门和参考文档为主,‍‍因为业内现在ES相关资料相对来说比较丰富,但是想要跟上官方最新版本的节奏以及考虑权威性,还是官方的参考文档和‍‍有关的手册会比较靠谱;‍‍


另一方面,建议可以积极参与社区的一些活动,比如国内的中文社区有提供一些官方文档‍‍的中文版翻译,可以一定程度上降低学习门槛。另外国内的社区活动相对是比较丰富的,在一些一二线‍‍城市都有本地的技术沙龙活动,大家可以积极参加和交流学习。




2

ES从业者的职业发展


/ 话题2 /


对ES开发者技术发展方向的建议


ES开发者大致可以分为三类:


第一类,是做垂直搜索业务的开发者。就我个人而言,我是从1.0版本开始接触的,最早是做垂直搜索业务,ES能帮我们快速上手搜索业务。如果你想在搜索业务持续精进,深入掌握ES是很好的方式,因为ES底层使用的是Lucene,加上它的分布式系统架构,这都是做搜索引擎的过程中,迟早都要接触的。ES是一个成熟的开源项目,从它的源代码可以学习到很多分布式系统知识,包括各种线程池的设计,以及多个节点间的协同,给搜索从业者提供了一个范本,即使你业务规模大到一定程度,不再使用ES,转为自行开发,它的系统原理和ES也可能基本是一致的。


另一类ES开发者,已经分化到不同业务领域,比如做安全分析、日志分析、源代码搜索等等。他们对ES的了解是阶段性的,ES作为一个搜索的解决方案,从数据索引到检索、查询和最后的排序,都能够很好地支撑。如果开发者希望他的业务有更好的提升的话,还得持续加深研究,甚至可以考虑考取Elastic官方认证,来给自身职业加分。


还有一类开发者,当公司的ES集群发展到一定规模后,公司出于资源使用率和集群稳定性及可用性考虑,可能会自研ES服务化平台,对所有ES集群进行管控和资源使用率优化。对这一类开发者,我们建议他们对ES底层做更深入的研究,可能需要为业务方做定制化的插件开发,甚至做一些基础研发,替换掉官方的某个模块,包括通过Docker和K8S实现容器化。




3

ES应用实践


/ 话题3 /


Elasticsearch在vivo的应用实践


Elasticsearch 作为垂搜引擎的抉择


从2014年开始,我们在vivo开始做垂直搜索业务,典型场景包括:应用商店、游戏中心、官方商城、铃声、壁纸和主题等,因为手机上有很多内容资源需要分发给用户,搜索是用户获取资源的非常重要的方式。在安卓生态蓬勃发展的时期,有两三百万APP,搜索功能对用户体验就至关重要,对游戏或APP开发者来说,搜索对提升他们内容的分发效率也是很重要的渠道,搜索在整个平台上的分发量超过了8成。所以我们从那个时候开始发力做垂直搜索。现在回过头来看,很庆幸当时非常明智的选择了Elasticsearch,如果当时选择了其他技术栈,现在很可能会经历一个替换的过程。


在垂搜领域对Elasticsearch做定制化改造


vivo互联网的垂直搜索业务刚开始用Elasticsearch时,从0到1的过程没有太大挑战,很快就能实现垂搜的基本功能。但是一旦实现了这个功能之后,搜索引擎需要持续优化迭代,大家会发现诸如分词效果不好,数据召回率或准确率不够等方面的问题。数据索引、检索以及排序这三个方面都有做深入的干预。因此把Elasticsearch 作为一个底层快速检索和粗排工具,利用Elasticsearch做首轮召回,然后再通过后续其他自研系统做精排(二次排序),实现更精细的业务逻辑。这是我们遇到的第一大挑战,我相信在业界的垂搜项目,大概率会经历这样一个过程。经历过这样的定制化改造后,就可以根据用户点击行为等评价指标做持续性优化。




4

ES技术前瞻


/ 话题4 /


ES和数据可视化的结合


在监控运维领域,需要通过数据面板将数据结果呈现给开发者或其他角色去查看,之前大家用Grafana比较多,也有部分项目会使用Kibana。据我们了解,国内开发者和国外相比,在用户体验的需求上,可能存在差异。


国外开发者可能更偏好Kibana,既可以通过拖拽实现查询,也可以写一些简单表达式实现高级查询,然后快速得到可视化面板。


但在国内,特别是非技术人员和大数据开发者,不太习惯使用表达式的方式来高度定制,更习惯于拖拽类的,或是表达式定制类的。在未来希望能够考虑到开发者不同偏好群体的习惯,对目前功能做一些区隔处理。另外,国内的可视化项目,特别是数字化大屏,需要非常立体和丰富的展现,Kibana对这方面需求可以多做一些考量。


/ 话题5 /


ES和AI的结合


目前我们在Github看到一些ES和AI结合的开源项目,比如尝试使用Learn to Rank,使用机器学习去优化排序,包括Elastic官方也在增强这方面的能力。我觉得AI的部分比较难做成像ES功能化的部分那样开箱即用,因为需要开发者对机器学习模型有基本的认知,知道模型的输入和输出是什么,优化点是哪个部分。我觉得这是未来可以加大投入的地方,如何将AI能力赋能给那些没有机器学习背景的开发者,让他们能给业务更好的提升。另外一方面,业内也有同行在探索基于机器学习构建索引,这个对于大平台大数据量来说是一个比较新的但很有吸引力的方向。



END


|  往期精彩  |


文章转载自搜索与推荐技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论