面试题答案
一键面试number_of_shards
:- 作用:分片数量决定了索引数据在集群节点上的分布。适当增加分片可以提高索引写入的并行度,分散负载。但过多的分片会增加集群管理开销,如分片间的通信和元数据管理。例如,对于大规模写入场景,合理增加分片数可以让不同的分片在不同节点并行处理写入请求,提升索引性能。
number_of_replicas
:- 作用:副本数量用于提供数据冗余和高可用性。降低副本数量在索引写入时可以减少数据复制的开销,提升写入性能。因为在索引文档时,不仅要写入主分片,还要同步到副本分片。例如,在写入阶段将副本数暂时设为0,完成写入后再设置合适的副本数,可以加快索引速度。
refresh_interval
:- 作用:该参数控制索引数据刷新到可搜索状态的频率。默认是1秒,降低此频率(如设置为30秒或更高)可以减少刷新操作带来的I/O开销,从而提升索引性能。因为每次刷新都会涉及到将内存中的数据写入磁盘等操作,降低频率可减少这些操作的次数。
index.translog.durability
:- 作用:该参数决定了事务日志(translog)的持久化策略。设置为
async
,可以减少每次索引操作时将事务日志同步到磁盘的频率,提升写入性能。但这会增加在节点故障时数据丢失的风险。例如,在一些对数据一致性要求不是非常严格,而更注重写入性能的场景下,可以考虑使用async
策略。
- 作用:该参数决定了事务日志(translog)的持久化策略。设置为
index.translog.sync_interval
:- 作用:配合
index.translog.durability
为async
时使用,它指定了事务日志异步刷盘的时间间隔。增大这个间隔时间,可以减少刷盘次数,提升索引性能,但同样会增加数据丢失风险。
- 作用:配合