ES底层读写工作原理,看这一篇就够了
Elasticsearch(ES)底层的读写工作原理涉及很多技术细节,但是为了简洁,我们可以概括为以下几个关键点:
写操作(Write Operation):
- 客户端发送写请求到节点。
- 节点将写操作广播到集群中所有的数据节点。
- 每个数据节点在本地执行写操作,并将其复制到集群中的其他节点。
- 一旦所有的复制完成,节点向客户端确认写操作完成。
读操作(Read Operation):
- 客户端发送读请求到节点。
- 节点将读操作委托给包含所需数据的节点。
- 数据节点返回数据给请求节点,然后返回给客户端。
搜索操作(Search Operation):
- 客户端发送搜索请求到节点。
- 节点将搜索请求分发到某些或所有节点,根据搜索类型(如:dfs\_query\_then\_fetch)和复制设置进行合适的查询。
- 收集结果并处理,最后返回给客户端。
缓存(Caching):
- 节点可能会缓存一些数据和计算结果以提高性能。
分片(Sharding):
- 数据分布在不同的分片上,以实现数据的横向扩展。
副本(Replica):
- 每个分片可以有一个或多个副本,用于提供高可用性和高容错性。
- refresh操作:
- 当文档被索引后,它首先存在于内存缓存中,并在某个时刻被刷新到磁盘,这个过程称为refresh。
合并操作(Merge Operation):
- 为了维护存储效率,Lucene会定期执行段合并,删除那些包含已删除文档的旧的segments。
以上是Elasticsearch底层读写工作原理的高度概括,实际上每一步骤都涉及到更多细节,例如并发控制、锁机制、事务处理、磁盘I/O优化等等。
评论已关闭