ES集群中的數據存儲在分片(Shard)中,每個分片都是一個獨立的Lucene索引。分片是數據在集群中的最小單元,用于存儲和處理數據。
當創建索引時,ES會將數據分成多個分片,并將這些分片分布在集群的不同節點上。每個分片負責存儲一部分數據,并對該數據進行索引和搜索操作。
分片的數量可以在創建索引時指定,也可以在索引創建后進行調整。通常,一個索引會有多個分片,這樣可以實現數據的水平擴展和并行處理。
每個分片都有自己的副本(Replica),副本用于提高數據的可靠性和可用性。副本分布在集群的不同節點上,當主分片不可用時,副本會自動接管工作。
數據在分片中以倒排索引的形式進行存儲,倒排索引通過將每個文檔中的每個詞項與包含該詞項的文檔進行關聯,以實現快速的全文搜索。倒排索引使用B樹等數據結構進行優化,以提高搜索性能。
除了倒排索引,ES還使用了其他數據結構來存儲和管理數據,如段(Segment)、位集合(Bitset)和緩存(Cache)。這些數據結構用于支持各種搜索和聚合操作,并提供高效的數據訪問和處理能力。
總之,ES集群中的數據通過分片來存儲和處理,每個分片是一個獨立的Lucene索引,數據存儲在倒排索引和其他數據結構中。分片和副本的分布和復制策略由ES自動管理,以實現數據的高可用和可擴展性。