Elasticsearch 面试题集绵
问题1:Elasticsearch为啥是近实时搜索?
答:A. 新增的文档会被收集到Indexing Buffer中,然后文档从Indexing Buffer写入到文件系统缓存中,是需要每秒自动刷新分片,这时索引文档的变化并不是立即对搜索可见。
问题2:Elasticsearch深分页查询有什么问题?
答:A. ES集群的分页查询支持from和size参数,查询的时候,每个分片必须构造一个长度为from+size的优先队列,然后回传到网关节点,网关节点再对这些优先队列进行排序找到正确的size个文档;
B. 由此可见,当from足够大的时候,就算不发生OOM,也会影响到CPU和带宽等,从而影响到整个集群的性能。
问题3:ES查询数据快的原理
答:A. 倒排索引:Elasticsearch使用倒排索引来存储和查询数据。倒排索引是一种数据结构,它将每个文档中的每个字段的值作为关键词,然后建立关键词到文档的映射。这种结构可以快速定位包含某个关键词的文档,从而加速查询速度。
B. 分片和副本:Elasticsearch将数据分片存储在多个节点上,每个分片可以水平扩展存储和查询能力。此外,每个分片还可以有多个副本,确保数据的高可用性和容错性。通过分片和副本的机制,Elasticsearch可以并行处理查询请求,提高查询性能。
C. 缓存和缓存预热:Elasticsearch内置了各种类型的缓存,如字段数据缓存、过滤器缓存等,用于加速查询。此外,Elasticsearch还支持缓存预热,即在查询之前将数据加载到缓存中,从而减少查询时间。
D. 使用近似搜索算法:Elasticsearch支持近似搜索算法,如布隆过滤器、Levenshtein距离等,可以在某种程度上减少倒排索引的检索范围,提高查询效率。

浙公网安备 33010602011771号