Elasticsearch 中的数据存储流程简述 ?

Elasticsearch中的数据存储流程可以简述为以下几个步骤:

  1. 将数据添加到Elasticsearch时,需要将数据索引化,即将数据存储到一个或多个分片(shards)中。每个分片都是一个最小级别的工作单元,只保存了索引中所有数据的一部分。
  2. 当一个写请求发送到Elasticsearch后,数据会被暂时写入内存缓冲区,并添加事务日志(translog)。默认设置下,每隔1秒钟会将内存缓冲区的数据刷新到Linux的File system cache,并清空内存缓冲区。
  3. 默认设置下,每隔30分钟会将File system cache中的数据flush到硬盘。这一步是通过调用fsync来实现的,保证了即使因为断电File system cache中的数据丢失,Elasticsearch重启后也能通过日志回放找回丢失的数据。
  4. 在查询流程中,Elasticsearch基于segment进行查询。每个segment可以看做是一个独立的subindex,在建立索引的过程中,Lucene会不断的flush内存中的数据持久化形成新的segment。多个segment也会不断的被merge成一个大的segment。

发表评论

后才能评论