MST

星途 面试题库

面试题:ElasticSearch中文档分发策略的基本原理是什么

请简要阐述ElasticSearch在将文档分发给不同分片时遵循的基本原理,包括涉及到的主要组件和大致流程。
18.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

基本原理

Elasticsearch 使用路由算法将文档分发给不同分片。路由算法基于文档的 _id,确保相同 _id 的文档始终被路由到相同的分片,这样可以保证在读取文档时能准确找到存储位置。

主要组件

  1. 集群:由多个节点组成,这些节点负责存储和处理数据。
  2. 节点:可以是主节点(负责集群级别的操作,如创建或删除索引,跟踪哪些节点是集群的一部分)、数据节点(存储数据并执行数据相关的操作,如增删改查)等。
  3. 索引:逻辑上的文档集合,一个索引可以被分为多个分片存储在不同节点上。
  4. 分片:索引的物理分区,每个分片都是一个独立的Lucene索引,允许 Elasticsearch 水平扩展存储和处理能力。

大致流程

  1. 文档写入请求:客户端发送写入文档的请求到集群中的某个节点,该节点称为协调节点。
  2. 计算路由:协调节点根据文档的 _id,使用公式 shard = hash(_id) % number_of_primary_shards 计算出应该将文档路由到哪个分片。这里 number_of_primary_shards 是索引创建时指定的主分片数量。
  3. 转发请求:协调节点将请求转发到对应分片所在的数据节点。如果目标分片是副本分片,协调节点会将请求转发到对应的主分片所在节点。
  4. 写入主分片:数据节点在主分片上执行写入操作,成功后将操作转发到所有相关的副本分片。
  5. 返回响应:当所有副本分片都成功写入后,数据节点向协调节点返回成功响应,协调节点再将响应返回给客户端。