解决Windows SMB和Java在Windows上的bug

编辑

解决Windows SMB和Java在Windows上的bug

编辑

当使用基于SMB协议的共享文件系统(例如Azure文件服务)来存储索引时,Lucene打开索引段文件的方式是使用只写标志。这是打开文件的正确方式,因为它们只用于写入,并允许不同的文件系统实现对其进行优化。遗憾的是,在使用SMB的Windows系统中,这会禁用缓存管理器,导致写入速度变慢。这在LUCENE-6176中有所描述,但这会影响每一个Java程序!这需要并且必须在ES和/或Lucene之外进行修复,无论是Windows还是OpenJDK。目前,我们提供了一种实验性的支持,可以使用读标志打开文件,但这应该被认为是实验性的,正确的修复方法是在OpenJDK或Windows中。

Store SMB插件提供了两种针对SMB优化的存储类型

smb_mmap_fs
默认mmap fs的SMB特定实现
smb_simple_fs
已弃用::[7.15,“smb_simple_fs已弃用,将在8.0中移除。请改用smb_nio_fs或其他文件系统。”]
smb_nio_fs
默认nio fs的SMB特定实现

要使用这些特定的存储类型之一,您需要安装Store SMB插件并重启节点。然后配置Elasticsearch以设置您想要的存储类型。

可以通过将以下内容添加到elasticsearch.yml文件中来为所有索引配置此设置

index.store.type: smb_nio_fs

请注意,设置将应用于新创建的索引。

它也可以在索引创建时按索引设置

PUT my-index-000001
{
   "settings": {
       "index.store.type": "smb_mmap_fs"
   }
}