繁体   English   中英

Mac上的ElasticSearch错误“/ System / Volumes / Data / usr / local / var / lib / elasticsearch / nodes / 0”“写”

[英]ElasticSearch Error “/System/Volumes/Data/usr/local/var/lib/elasticsearch/nodes/0” “write” on Mac 10.15

我试图在Mac OS X 10.15 Catalina上启动elasticSearch 6.8,但它显示错误。 我已经为System / Volumes / Data / usr / local / var / lib / elasticsearch / nodes / 0文件夹提供了777权限。

  • ElasticSearch 6.8
  • OpenJDK 12

    [2019-06-24T15:12:32,803] [WARN] [oebElasticsearchUncaughtExceptionHandler] [未知]线程中的未捕获异常[main] org.elasticsearch.bootstrap.StartupException:java.security.AccessControlException:access denied(“java.io.FilePermission” “/ system / Volumes / Data / usr / local / var / lib / elasticsearch / nodes / 0”“写”)在org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163)〜[elasticsearch-6.8。 1.jar:6.8.1] org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)〜[elasticsearch-6.8.1.jar:6.8.1] at org.elasticsearch.cli.EnvironmentAwareCommand.execute( EnvironmentAwareCommand.java:86)〜[elasticsearch-6.8.1.jar:6.8.1]在org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)〜[elasticsearch-cli-6.8.1.jar:6.8 .1] org.elasticsearch.cli.Command.main(Command.java:90)〜[elasticsearch-cli-6.8.1.jar:6.8.1] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java :116)〜[elasticsearch-6.8.1.jar:6.8.1]在org.elasticsearch.bootstrap。 Elasticsearch.main(Elasticsearch.java:93)〜[elasticsearch-6.8.1.jar:6.8.1]引起:java.security.AccessControlException:访问被拒绝(“java.io.FilePermission”“/ System / Volumes / Data / usr / local / var / lib / elasticsearch / nodes / 0“”write“)java.security.AccessController.checkPermission上的java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)〜[?:1.8.0_212] (AccessController.java:884)〜[?:1.8.0_212] java.lang.SecurityManager.checkPermission(SecurityManager.java:549)〜[?:1.8.0_212] java.lang.SecurityManager.checkWrite(SecurityManager.java) :979)〜[?:1.8.0_212] at sun.nio.fs.UnixPath.checkWrite(UnixPath.java:801)〜[?:?] at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:376 )〜[?:?] java.nio.file.Files.createDirectory(Files.java:674)〜[?:1.8.0_212] java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)〜 [?:1.8.0_212]在org.apache.lucene.store.Nat的java.nio.file.Files.createDirectories(Files.java:727)〜[?:1.8.0_212] 在org.apache.lucene.store.FSLockFactory的iveFSLockFactory.obtainFSLock(NativeFSLockFactory.java:92)〜[lucene-core-7.7.0.jar:7.7.0 8c831daf4eb41153c25ddb152501ab5bae3ea3d5 - jimczi - 2019-02-04 23:16:28] .obtainLock(FSLockFactory.java:41)〜[lucene-core-7.7.0.jar:7.7.0 8c831daf4eb41153c25ddb152501ab5bae3ea3d5 - jimczi - 2019-02-04 23:16:28]在org.apache.lucene.store.BaseDirectory。在org.elasticsearch.env.NodeEnvironment $ NodeLock获取锁定(BaseDirectory.java:45)〜[lucene-core-7.7.0.jar:7.7.0 8c831daf4eb41153c25ddb152501ab5bae3ea3d5 - jimczi - 2019-02-04 23:16:28] NodeEnvironment.java:211)〜[elasticsearch-6.8.1.jar:6.8.1] at org.elasticsearch.env.NodeEnvironment。(NodeEnvironment.java:270)~ [elasticsearch-6.8.1.jar:6.8.1]在org.elasticsearch.node.Node。(Node.java:296)〜[elasticsearch-6.8.1.jar:6.8.1] org.elasticsearch.node.Node。(Node.java:266)〜[elasticsearch- 6.8.1.jar:6.8.1] org.elasticsearch.bootstrap.Bootstrap $ 5.(Bootstrap.java:212)〜[elasticsearch-6.8.1.jar:6.8.1] at org.elastic search.bootstrap.Bootstrap.setup(Bootstrap.java:212)〜[elasticsearch-6.8.1.jar:6.8.1]在org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333)〜[elasticsearch-6.8 .lj:6.8.1] org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)〜[elasticsearch-6.8.1.jar:6.8.1] ... 6更多

尝试sudo ./elsticsearch或者我认为给你的ELASTIC BASEDIR数据文件夹的权限(取决于你的安装方式)会解决它(不确定但值得一试)

现在,Catalina符号链接/ usr / local /到其他一些数据卷。

通过brew安装的Elasticsearch为数据和日志创建了不同的目录链接。 您可以像这样在配置文件中插入完整路径。 这是因为弹性搜索不像某种方式喜欢符号链接?

path.data: /System/Volumes/Data/usr/local/var/lib/elasticsearch/
path.logs: /System/Volumes/Data/usr/local/var/log/elasticsearch/

但是它会导致另一个错误,即无法访问插件。

Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "/System/Volumes/Data/usr/local/Cellar/elasticsearch-full/7.1.1/libexec/modules/percolator/percolator-client-7.1.1.jar" "read")

解决方法是手动下载elasticsearch并使用自定义启动守护程序从您的用户目录运行。 这对我有用。

也许别人可以对此有所启发。

我在ElasticSearch 2.4和OpenJDK 8上遇到了同样的错误,并且在没有chmodchown情况下工作或者使用sudo运行ES。

这篇评论中的解决方案,虽然不理想(你可以说你的java环境不太安全),帮助我让它运行: https//stackoverflow.com/a/12317528

我基本上将以下内容添加到我的java.policy (因为我安装了AdoptOpenJDK 8,我用$ sudo nano /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/lib/security/java.policy编辑了它$ sudo nano /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/lib/security/java.policy ),在第二个grant {}块内,最后:

permission java.io.FilePermission "/System/Volumes/Data/usr/local/Cellar/elasticsearch@2.4/-", "read";
permission java.io.FilePermission "/System/Volumes/Data/usr/local/var/elasticsearch/-", "read";
permission java.io.FilePermission "/System/Volumes/Data/usr/local/var/elasticsearch/-", "write";
permission java.io.FilePermission "/System/Volumes/Data/usr/local/var/elasticsearch/-", "delete";

注意我的路径和你的路径略有不同(我在ES 2.4上,而你在6.8,这可能是相关的),但希望这可以帮助你解决问题。

如果您降级了Elasticsearch的版本,Elasticsearch无法理解最新版本的文件,因此一种解决方案是删除数据目录(小心它会删除所有数据)

rm -rf System/Volumes/Data/usr/local/var/lib/elasticsearch/nodes

或者其他解决方案是回到之前的版本(最近的版本)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM