开源的网站建设平台,优秀网站设计模板,会展网站建设成功的原因,wordpress文章末尾添加内容1. 写入请求
当一个写入请求#xff08;如 Index、Update 或 Delete 请求#xff09;通过REST API发送到Elasticsearch时#xff0c;通常包含一个文档的内容#xff0c;以及该文档的索引和ID。
2. 请求路由
协调节点#xff1a;首先#xff0c;请求会到达一个协调节点…
1. 写入请求
当一个写入请求如 Index、Update 或 Delete 请求通过REST API发送到Elasticsearch时通常包含一个文档的内容以及该文档的索引和ID。
2. 请求路由
协调节点首先请求会到达一个协调节点coordinating node。该节点负责将请求路由到适当的数据节点data node。路由基于文档的ID和索引的分片配置Elasticsearch计算该文档应该存储在哪个主分片上以确保数据均匀分布。根据路由算法该文档在哈希表中的位置决定了它的存储位置。
默认路由使用文档的ID进行哈希计算与索引的主分片数量进行取模运算以确定文档存储的具体分片。
自定义路由使用 routing 参数在写入文档时可以使用routing参数指定自定义路由。这将覆盖默认的基于文档ID的路由逻辑。
3. 主分片和副本分片
主分片协调节点将写入请求发送到负责存储文档的主分片primary shard数据节点。副本分片在写入操作完成后Elasticsearch将数据复制到配置的副本分片replica shard以确保高可用性。副本用于提供冗余和负载均衡。
4. 内存写入 事务日志Translog在写入操作到达主分片后Elasticsearch会首先将文档写入到一个称为“事务日志”的文件中。这一过程在内存中进行以便在意外失败时能够保持数据的完整性。事务日志记录了所有的写入操作包括新增、更新和删除。 内存缓冲在确认写入事务日志后Elasticsearch会将文档的内容写入到内存中并缓冲起来。内存中的数据结构称为“索引缓冲区”index buffer。
5. 刷新Refresh 刷新操作每隔一段时间Elasticsearch会进行一次“刷新”操作它会将内存中的索引缓冲区的数据刷新到磁盘上使这些数据变得可搜索。默认情况下Elasticsearch每1秒进行一次刷新。 刷新过程在刷新过程中Elasticsearch会为当前的文档创建新的段segment并把它们写入到磁盘。在此期间新的写入操作仍可以在不影响正在进行的搜索的情况下进行。
6. 索引Index过程 分词对于文本类型的字段Elasticsearch还会对文本进行分词处理以便在创建索引时使用其关键词tokens进行搜索。 倒排索引Elasticsearch通过倒排索引将文档中的每个词映射到包含该词的文档。这一过程是在分片内部完成的从而提高了搜索速度。
7. 合并Merge
段合并随着时间的推移Elasticsearch会将多个小段合并成较大的段以提升存储效率和搜索性能。这一过程是自动进行的通常在写入和获取请求的低峰期执行。
8. 返回响应
所有操作完成后Elasticsearch返回写入请求的响应包括操作是否成功及相应的元数据如文档ID和版本号等。
9. 容错和重试 失败处理如果写入请求失败Elasticsearch会记录错误并可以配置重试机制。 副本确认对于高可用性要求的场景Elasticsearch支持在确认写入完所有副本分片后再返回成功响应可以通过设置 wait_for_active_shards来控制这一行为。