解决 Windows SMB 和 Windows 上 Java 的 Bug
编辑解决 Windows SMB 和 Windows 上 Java 的 Bug
编辑当使用基于 SMB 协议(例如 Azure 文件服务)的共享文件系统来存储索引时,Lucene 打开索引段文件的方式是使用只写标志。这是打开文件的正确方式,因为这些文件只会用于写入操作,并且允许不同的文件系统实现对其进行优化。遗憾的是,在 Windows 上使用 SMB 时,这会禁用缓存管理器,导致写入速度变慢。这已经在 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" } }