面试题答案
一键面试- 合理设计索引结构
- 原理:根据业务需求,将数据按照不同的类别或属性进行合理拆分建立索引。比如对于电商商品数据,可按商品类别建立不同索引,搜索时直接定位到相关索引,减少搜索范围。这样能避免在庞大的全量索引中遍历,提高检索速度。
- 优化文档建模
- 原理:避免在文档中包含过多不必要的字段,精简文档结构。字段过多会增加索引体积,占用更多存储空间和搜索时的处理资源。例如对于用户搜索商品,商品的详细生产流程字段如果与搜索无关则可去除,使索引更紧凑,提升搜索性能。
- 定期进行索引维护(如合并和优化)
- 原理:ElasticSearch在写入数据时会产生多个小的段(segment),过多小的段会增加搜索时的I/O开销。定期进行索引合并优化操作,能将小的段合并成大的段,减少段的数量,从而降低搜索时需要检索的段数,提高搜索效率。
- 使用合适的分词器
- 原理:不同的业务场景需要不同的分词策略。例如对于中文文本,使用能准确切分词语的分词器,如结巴分词器的ElasticSearch版本,可将文本准确分词。合适的分词能提高文档与搜索词匹配的准确性,避免因分词不当导致重要信息无法匹配,从而提升搜索性能。
- 设置合理的副本数
- 原理:副本主要用于高可用和负载均衡。适当增加副本数可以将搜索请求分摊到多个副本上处理,提高整体的搜索吞吐量。但副本数过多会占用过多资源,所以要根据服务器资源和业务负载情况设置合理的副本数,在保证性能的同时避免资源浪费。