面试题答案
一键面试关键组件
- 持久化存储:Elasticsearch 通常使用本地磁盘作为持久化存储。每个节点都有自己的存储目录,数据以段(segment)的形式存储在磁盘上。
- 主节点:负责管理集群状态,包括节点的加入和离开、索引的创建和删除等。主节点会将集群状态信息持久化到磁盘上的
state
文件中。
操作步骤
- 数据写入:
- 当有新的数据写入 Elasticsearch 时,首先会写入到内存中的
translog
(事务日志),这确保了数据不会因为节点故障而丢失。 - 同时,数据也会写入到内存中的
buffer
中。
- 当有新的数据写入 Elasticsearch 时,首先会写入到内存中的
- 刷新(Flush):
- 当
translog
达到一定大小或者经过一定时间,会触发一次flush
操作。 - 在
flush
过程中,内存buffer
中的数据会被写入到磁盘上形成一个新的段(segment),并且translog
会被清空。
- 当
- 合并(Merge):
- 随着时间推移,磁盘上会产生多个小的段。Elasticsearch 会自动执行合并操作,将多个小的段合并成一个大的段。
- 合并操作可以减少段的数量,提高查询性能。
- 集群状态更新:
- 主节点在处理集群状态变更(如节点加入、离开,索引创建、删除等)时,会将新的集群状态信息写入到磁盘上的
state
文件中。 - 其他节点通过从主节点同步
state
文件来获取最新的集群状态。
- 主节点在处理集群状态变更(如节点加入、离开,索引创建、删除等)时,会将新的集群状态信息写入到磁盘上的