如何从远程位置在Elasticsearch中使用同义词与停用词文件?
可行!无需将文件放在ES配置目录,你遇到的是权限问题
当然可以从外部目录加载同义词和停用词文件,不是必须放在Elasticsearch的配置目录里——你碰到的access_control_exception是Java安全权限或文件系统权限限制导致的,而非ES不支持外部路径。下面是具体的解决方案:
常见原因与解决办法
1. Java安全策略限制(旧版ES适用)
如果你的Elasticsearch版本是5.x或更早(这类版本默认启用Java安全管理器),需要修改ES的Java安全策略文件,允许ES读取目标目录:
- 找到ES安装目录下的
config/java.policy文件 - 添加以下权限配置(替换为你的目标目录):
这里的grant { permission java.io.FilePermission "E:\\tmp\\-", "read"; };-表示允许读取该目录下的所有文件和子目录,修改后重启Elasticsearch即可生效。
2. 文件系统权限不足(Windows系统常见)
在Windows环境下,运行Elasticsearch的用户账号可能没有E:\tmp目录的读取权限:
- 右键点击
E:\tmp目录 → 选择「属性」→ 切换到「安全」标签页 - 添加运行ES的用户(比如本地服务账号或你启动ES的账号),并赋予「读取」和「列出目录内容」的权限
- 应用权限设置后,重启ES再尝试加载文件
3. 配置可信路径(新版ES推荐)
对于Elasticsearch 6.x及以上版本,更推荐通过elasticsearch.yml配置可信路径,避免权限问题:
- 打开
config/elasticsearch.yml,添加或修改以下配置:path.repo: ["E:\\tmp"] - 重启Elasticsearch,之后在索引的分析器配置里直接引用该目录下的
synonyms.txt和stopwords.txt即可,ES会认可这个路径为可信目录
补充说明
Elasticsearch 7.0及以上版本已经默认移除了Java安全管理器,所以这类权限错误大多是文件系统权限问题,或者是没有将目标目录配置为可信路径导致的。只要解决上述任一问题,就能正常使用外部目录的同义词/停用词文件。
内容的提问来源于stack exchange,提问作者suraj vantigodi
相关产品推荐
相关产品推荐

