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 能力赋能给那些没有机器学习背景的开发者,让他们能给业务更好的提升。另外一方面,业内也有同行在探索基于机器学习构建索引,这个对于大平台大数据量来说是一个比较新的但很有吸引力的方向。

相关活动


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

更多折扣活动,请访问阿里云 Elasticsearch 官网

• 阿里云 Elasticsearch 商业通用版,1核2G首月免费
阿里云 Elasticsearch 日志增强版,首月六折,年付六折
阿里云 Logstash 2核4G首月免费

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

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

上一篇:Java源码系列之String


下一篇:Android代码中实现WAP方式联网