基于此,https://www.elastic.co/guide/en/elasticsearch/reference/current/near-real-time.html,当我们对文档进行索引时,第一个文档会附加在内存缓冲区和事务日志中。
当刷新发生时,它会将内存缓冲区中的文档复制到内存中的段中,内存缓冲区将被清空。一旦elasticsearch执行刷新操作,内存中的段将保留在磁盘和原始文档中。事务日志也将被清空。
如果我错了,请纠正我,段不存储原始文档,它只包含反向索引,那么在刷新之前ES存储原始文档的位置?
感谢
Elastic构建在Apache Lucene上,Lucene的索引属于被称为反向索引的索引家族。这是因为它可以为一个术语列出包含它的文档。这与文档列出术语的自然关系相反。该索引存储有关术语的统计信息,以便借助标记器和分析器模式使基于术语的搜索更加高效。
当您添加或接收新文档时,您正在创建新的分段。每个更改都在内存中缓冲并定期刷新。请注意,刷新只是将IndexWriter中的内部缓冲状态移动到索引中,但这些更改对IndexReader不可见,操作日志和缓冲区将被清除。
您可以在这里找到更多关于分段和ApacheLucene预索引过程的信息。