5miles: ElasticSearch驱动的高效对外搜索实践与优化
需积分: 10 59 浏览量
更新于2024-07-20
收藏 551KB PDF 举报
5miles是一家企业利用Elasticsearch (简称ES) 进行其对外搜索业务的实践经验分享。2016年5月15日的Elastic Beijing Meetup上,该团队详细探讨了他们在面对高并发、实时性要求以及复杂查询场景时如何优化ES应用。
首先,5miles在"home"场景中的搜索需求极为关键,包括快速响应用户的个性化推荐、新商品的合理分布以及reboost操作后的商品展示。他们设定了严格的性能指标,如确保100%的home请求在1秒内完成,无论用户访问哪一页,下一页的数据已经预先计算。为了减少计算负担和提高展示速度,5miles采用了以下策略:
1. 每个请求设置特定区域(Box),通过将geoboundbox代替distance filter,实现了异步计算和缓存。
2. 计算box的过滤器放置在所有过滤器的首位,优先筛选。
3. 数据分析后,确定默认的300km范围作为Box大小。
4. 异步化请求处理,提前预加载数据。
针对自定义评分需求,5miles利用了functionscore guass函数,通过实现自定义的AbstractSearchScript类和NativeScriptFactory,提供了重载的评分逻辑。但同时也提醒注意ES的一些特性,如类型对象的重写和避免使用SourceLookup,因为后者可能导致性能问题。
在处理数据分词不敏感的问题时,5miles重写了距离计算方法,进行了评分规范化,设置了最小boost值以应对Gauss函数可能出现的score为0的情况。
优化效果显著,优化前,home请求占慢请求(>200ms)的比例高达75%,而优化后这个比例下降到6%,超过99.6%的请求都在200ms内完成,没有超过1s的请求,表明优化大大提高了搜索效率。
此外,5miles还在实践中引入了geohash技术,这有助于更精确地定位和检索地理位置相关的数据,进一步提升了搜索性能。整个过程中,5miles展示了如何灵活运用Elasticsearch的功能,结合业务实际需求进行高效的数据检索和处理,从而实现了一个高性能的对外搜索服务。
2021-09-30 上传
2021-10-04 上传
2021-02-21 上传
2021-03-30 上传
2024-09-16 上传
2024-09-16 上传
2010-12-29 上传
2021-02-05 上传
2021-04-20 上传
Wang_Zhenwei
- 粉丝: 316
- 资源: 33
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常