解决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优化的存储类型
要使用这些特定的存储类型之一,您需要安装Store SMB插件并重启节点。然后配置Elasticsearch以设置您想要的存储类型。
可以通过将以下内容添加到elasticsearch.yml
文件中来为所有索引配置此设置
index.store.type: smb_nio_fs
请注意,设置将应用于新创建的索引。
它也可以在索引创建时按索引设置
PUT my-index-000001 { "settings": { "index.store.type": "smb_mmap_fs" } }