ES集群中的数据存储在分片(Shard)中,每个分片都是一个独立的Lucene索引。分片是数据在集群中的最小单元,用于存储和处理数据。
当创建索引时,ES会将数据分成多个分片,并将这些分片分布在集群的不同节点上。每个分片负责存储一部分数据,并对该数据进行索引和搜索操作。
分片的数量可以在创建索引时指定,也可以在索引创建后进行调整。通常,一个索引会有多个分片,这样可以实现数据的水平扩展和并行处理。
每个分片都有自己的副本(Replica),副本用于提高数据的可靠性和可用性。副本分布在集群的不同节点上,当主分片不可用时,副本会自动接管工作。
数据在分片中以倒排索引的形式进行存储,倒排索引通过将每个文档中的每个词项与包含该词项的文档进行关联,以实现快速的全文搜索。倒排索引使用B树等数据结构进行优化,以提高搜索性能。
除了倒排索引,ES还使用了其他数据结构来存储和管理数据,如段(Segment)、位集合(Bitset)和缓存(Cache)。这些数据结构用于支持各种搜索和聚合操作,并提供高效的数据访问和处理能力。
总之,ES集群中的数据通过分片来存储和处理,每个分片是一个独立的Lucene索引,数据存储在倒排索引和其他数据结构中。分片和副本的分布和复制策略由ES自动管理,以实现数据的高可用和可扩展性。