面试题答案
一键面试- refresh_interval:
- 作用:控制Elasticsearch自动刷新索引的频率。刷新操作会将内存中的数据写入磁盘,使数据可被搜索到。如果该值设置过大,数据写入磁盘不及时,导致GET API获取的数据实时性差;如果设置过小,会增加I/O开销。例如,将
refresh_interval
从默认的1s调整为0s,可实现实时刷新,但这会对性能有较大影响,一般在测试环境或对实时性要求极高且数据量较小的场景下使用;在生产环境中,可根据业务需求适当调小,比如从1s调整为0.5s ,在一定程度上提高实时性,同时平衡性能。
- 作用:控制Elasticsearch自动刷新索引的频率。刷新操作会将内存中的数据写入磁盘,使数据可被搜索到。如果该值设置过大,数据写入磁盘不及时,导致GET API获取的数据实时性差;如果设置过小,会增加I/O开销。例如,将
- index.translog.durability:
- 作用:控制事务日志(translog)的持久化策略。事务日志用于保证数据的一致性和恢复能力。其有两个主要取值
request
和async
。request
模式下,每次写入操作都会同步刷新事务日志到磁盘,保证数据不丢失,但性能相对较低;async
模式下,事务日志会异步刷新到磁盘,性能较高,但在系统崩溃等异常情况下可能会丢失少量数据。在高并发读场景下,若要提高实时性,可以考虑使用request
模式,确保数据尽快持久化,从而提高GET API获取数据的实时性。
- 作用:控制事务日志(translog)的持久化策略。事务日志用于保证数据的一致性和恢复能力。其有两个主要取值
- index.unassigned.node_left.delayed_timeout:
- 作用:当一个节点离开集群时,Elasticsearch会等待一段时间,以便确定该节点是否真的离开了。这个参数设置等待的时间。如果设置时间过长,当节点离开后,数据重新分配和恢复的时间就会变长,导致在这段时间内GET API获取的数据可能不准确或不完整,实时性受到影响。适当减小这个值,如从默认的5分钟调整为1分钟,可加快集群对节点离开的响应速度,更快地恢复数据的正常状态,保障GET API的实时性。