存储

编辑

存储模块允许您控制索引数据在磁盘上的存储和访问方式。

这是一个底层设置。一些存储实现具有较差的并发性或禁用堆内存使用优化。我们建议坚持使用默认设置。

文件系统存储类型

编辑

有不同的文件系统实现或存储类型。默认情况下,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"
  }
}

这是一个专家级设置,将来可能会被删除。

以下部分列出了所有支持的不同存储类型。

fs
默认文件系统实现。这将根据操作环境选择最佳的实现,目前在所有支持的系统上都是 hybridfs,但可能会发生变化。
simplefs
deprecated::[7.15,"simplefs 已被弃用,将在 8.0 中删除。请改用 niofs 或其他文件系统。Elasticsearch 7.15 或更高版本将 niofs 用于 simplefs 存储类型,因为它提供了比 simplefs 更优或等效的性能。"]

Simple FS 类型是文件系统存储的直接实现(映射到 Lucene SimpleFsDirectory),它使用随机访问文件。此实现的并发性能较差(多个线程将形成瓶颈),并且会禁用一些堆内存使用优化。

niofs
NIO FS 类型使用 NIO 将分片索引存储在文件系统上(映射到 Lucene NIOFSDirectory)。它允许多个线程同时从同一文件读取。由于 SUN Java 实现中的一个错误,不建议在 Windows 上使用,并且会禁用一些堆内存使用优化。
mmapfs
MMap FS 类型通过将文件映射到内存(mmap)来将分片索引存储在文件系统上(映射到 Lucene MMapDirectory)。内存映射会占用进程中与映射文件大小相等的虚拟内存地址空间的一部分。在使用此类之前,请确保您已允许足够的虚拟地址空间
hybridfs
hybridfs 类型是 niofsmmapfs 的混合体,它会根据读取访问模式为每种文件类型选择最佳的文件系统类型。目前,只有 Lucene 术语词典、规范和文档值文件被内存映射。所有其他文件都使用 Lucene NIOFSDirectory 打开。与 mmapfs 类似,请确保您已允许足够的虚拟地址空间

您可以通过设置 node.store.allow_mmap 来限制 mmapfs 和相关的 hybridfs 存储类型的使用。这是一个布尔设置,指示是否允许内存映射。默认设置为允许。例如,如果您处于无法控制创建大量内存映射的环境中,因此需要禁用使用内存映射的功能,则此设置很有用。