存储
编辑存储
编辑存储模块允许您控制索引数据在磁盘上的存储和访问方式。
这是一个底层设置。一些存储实现具有较差的并发性或禁用堆内存使用优化。我们建议坚持使用默认设置。
文件系统存储类型
编辑有不同的文件系统实现或存储类型。默认情况下,Elasticsearch 将根据操作环境选择最佳的实现。
也可以通过在 config/elasticsearch.yml
文件中配置存储类型来为所有索引显式设置存储类型
index.store.type: hybridfs
这是一个静态设置,可以在索引创建时在每个索引的基础上设置
resp = client.indices.create( index="my-index-000001", settings={ "index.store.type": "hybridfs" }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { 'index.store.type' => 'hybridfs' } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", settings: { "index.store.type": "hybridfs", }, }); console.log(response);
PUT /my-index-000001 { "settings": { "index.store.type": "hybridfs" } }
这是一个专家级设置,将来可能会被删除。
以下部分列出了所有支持的不同存储类型。
Simple FS 类型是文件系统存储的直接实现(映射到 Lucene SimpleFsDirectory
),它使用随机访问文件。此实现的并发性能较差(多个线程将形成瓶颈),并且会禁用一些堆内存使用优化。
-
niofs
- NIO FS 类型使用 NIO 将分片索引存储在文件系统上(映射到 Lucene
NIOFSDirectory
)。它允许多个线程同时从同一文件读取。由于 SUN Java 实现中的一个错误,不建议在 Windows 上使用,并且会禁用一些堆内存使用优化。 -
mmapfs
- MMap FS 类型通过将文件映射到内存(mmap)来将分片索引存储在文件系统上(映射到 Lucene
MMapDirectory
)。内存映射会占用进程中与映射文件大小相等的虚拟内存地址空间的一部分。在使用此类之前,请确保您已允许足够的虚拟地址空间。 -
hybridfs
hybridfs
类型是niofs
和mmapfs
的混合体,它会根据读取访问模式为每种文件类型选择最佳的文件系统类型。目前,只有 Lucene 术语词典、规范和文档值文件被内存映射。所有其他文件都使用 LuceneNIOFSDirectory
打开。与mmapfs
类似,请确保您已允许足够的虚拟地址空间。
您可以通过设置 node.store.allow_mmap
来限制 mmapfs
和相关的 hybridfs
存储类型的使用。这是一个布尔设置,指示是否允许内存映射。默认设置为允许。例如,如果您处于无法控制创建大量内存映射的环境中,因此需要禁用使用内存映射的功能,则此设置很有用。