簡體   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