面试题答案
一键面试- 合理设计索引结构:将相关性高的数据放在同一个索引中,避免索引过于庞大。例如,一个电商系统中,可按商品类别分别建立索引,如服装类、电子类索引等,这样在搜索特定类别商品时能减少检索范围,提升性能。
- 优化字段映射:根据数据类型准确设置字段映射。对于不需要进行全文搜索的字段,设置为
not_analyzed
,避免不必要的分词处理。如商品的ID字段,通常直接匹配,设为not_analyzed
可加快搜索速度。 - 选择合适的分片数量:根据数据量和集群规模确定分片数。数据量较小且集群节点少,分片数不宜过多,避免资源浪费和过多的跨片查询开销;数据量较大时,适当增加分片以提高并行处理能力。例如,初始预估100GB数据量,可先设置5个分片,后续根据实际性能和数据增长调整。
- 使用倒排索引优化:倒排索引是ElasticSearch的核心,通过优化词条和文档的关联存储方式,例如采用更紧凑的数据结构存储词条和对应的文档列表,能加快词条查找和文档匹配速度。
- 启用索引缓存:利用ElasticSearch的索引缓存机制,缓存经常查询的索引数据,减少磁盘I/O。如热数据的索引可设置较高的缓存优先级,让其更易被缓存,下次查询相同数据时可直接从缓存获取,提升响应速度。