面试题答案
一键面试- 减少索引刷新间隔
- 原理:ElasticSearch 默认每隔1秒刷新一次索引(refresh interval),将内存中的数据写入磁盘,使其可被搜索。缩短这个间隔能更快让新数据可搜索,但会增加 I/O 开销。例如从默认的1秒缩短到0.5秒,可更快地将新上架商品或修改后的商品信息更新到索引中供搜索。
- 使用 percolator 预索引查询
- 原理:在 ElasticSearch 中,percolator 允许将查询语句预先存储在索引中。当有新文档(商品数据)进来时,会与这些预存的查询进行匹配。对于电商应用,可将热门搜索词对应的查询语句预存,新商品上架时快速判断是否匹配热门搜索,提高搜索响应速度。比如预存 “手机”“电脑” 等热门商品关键词的查询,新的手机或电脑商品上架能迅速被匹配到相关搜索结果中。
- 采用多副本与分片策略
- 原理:通过合理设置分片和副本数量,可利用 ElasticSearch 的分布式特性。分片将数据分散存储在不同节点,副本用于冗余和提高可用性。在电商搜索场景下,适当增加分片数量能并行处理更多搜索请求,提高搜索效率。例如根据商品类别设置多个分片,不同类别的商品搜索可并行处理。副本则在部分节点故障时保证搜索服务的可用性,同时也可用于分担读请求,优化搜索体验。
- 利用过滤器缓存
- 原理:ElasticSearch 支持缓存过滤器结果。在电商搜索中,常见的过滤条件如价格范围、品牌等,这些过滤条件相对固定且重复使用概率高。启用过滤器缓存后,相同过滤条件的搜索请求无需重复计算,直接从缓存获取结果,大大提高搜索速度。比如多次搜索价格在100 - 200元区间的商品,首次计算过滤结果后缓存,后续相同过滤条件的搜索可直接用缓存结果。