本文共 546 字,大约阅读时间需要 1 分钟。
文档存储在哪个分片中?
根据算法,存储的分片是通过对路由信息进行哈希计算后再与主分片数量取模得到的。具体来说,分片 ID 等于路由值对主分片数量取模的结果。这个过程决定了文档最终存储的位置,但一旦分片确定后,这个信息就无法再被修改了。主分片和复制分片的交互机制是这样的:在默认配置下,所有写入操作都先在主分片完成后再同步到复制分片。这样可以确保数据一致性。用户在查询数据时,可以直接从主分片或任一复制分片进行检索。
写操作(如新增、修改、删除)必须按照以下顺序进行:首先修改主分片,完成后再同步到所有复制分片。可以通过设置 replication 为同步模式(default)来实现这一点。如果需要异步写入,可以将其设置为 async,此时主分片完成后会立即返回给客户端。
在局部更新操作中,所有分片都需要参与。写入完成后,系统会自动将数据刷入到磁盘,并执行刷新操作(refresh),最终将数据提交(commit)到磁盘。这一过程确保了数据在搜索时可以被查询到。
关于数据存储,Elasticsearch 将新写入的数据首先存储在内存缓冲区中,然后写入到 Lucene 的段文件中。完成段文件的刷新(refresh)操作后,数据才会被持久化到磁盘。这一流程确保了数据的高效存储和快速检索。
转载地址:http://tsefk.baihongyu.com/