Play2上的Play2弹性搜索错误

我正在使用play 2弹性搜索插件(https://github.com/cleverage/play2-elasticsearch)并且在开发模式下工作正常,但是当我运行play dist并打包应用程序时,在运行它之后,索引不会被创建 .

这是堆栈跟踪:

[error] application - ElasticSearch:启动ElasticSearch Client时出错org.elasticsearch.ElasticSearchIllegalStateException:无法获取节点锁定,以下位置是否可写?:org.elasticsearch.env.NodeEnvironment中的[data / play2-elasticsearch] . (NodeEnvironment . java:123)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.internal.InternalNode . (InternalNode.java:139)~ [org.elasticsearch.elasticsearch-0.90.5 . jar:na] at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.NodeBuilder.node(NodeBuilder . java:166)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at com.github.cleverage.elasticsearch.IndexClient.start(IndexClient.java:36)〜[com.clever-age.play2-elasticsearch -0.8-SNAPSHOT.jar:0.8-SNAPSHOT] at com.github.cleverage.elasticsearch.plugin.IndexPlugin.onStart(IndexPlugin.java:47)〜[com.clever-age.play2-elasticsearch-0.8-SNAPSHOT.jar: 0.8-SNAPSHOT]引起的:java.io.IOException:无法在org.elasticsearch.env.NodeEnvironment上获得/ Users / Nicolas / IdeaProjects / lavidaporloscolores / target / universal / stage / data / play2-elasticsearch / nodes / 49的锁定 . (NodeEnvironment.java: 102)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.internal.InternalNode . (InternalNode.java:139)~ [org.elasticsearch.elasticsearch-0.90.5.jar: na] at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java: 166)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at com.github.cleverage.elasticsearch.IndexClient.start(IndexClient.java:36)〜[com.clever-age.play2-elasticsearch-0.8 -SNAPSHOT.jar:0.8-SNAPSHOT] at com.github.cleverage.elasticsearch.plugin.IndexPlugin.onStart(IndexPlugin.java:47)〜[com.clever-age.play2-elasticsearch-0.8-SNAPSHOT.jar:0.8- SNAPSHOT]引起:java.io.IOException:无法创建目录:/ Users / Nicolas / IdeaProje cts / lavidaporloscolores / target / universal / stage / data / play2-elasticsearch / nodes / 49 org.apache.lucene.store.NativeFSLock.obtain(NativeFSLockFactory.java:171)~ [org.apache.lucene.lucene-core- 4.4.0.jar:4.4.0 1504776 - sarowe - 2013-07-19 02:53:42]在org.elasticsearch.env.NodeEnvironment . (NodeEnvironment.java:80)〜[org.elasticsearch.elasticsearch-0.90 . 5.jar:na] at org.elasticsearch.node.internal.InternalNode . (InternalNode.java:139)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.NodeBuilder.build (NodeBuilder.java:159)〜[org.elasticsearch.elasticsearch-0.90.5.jar:na] at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)~ [org.elasticsearch.elasticsearch-0.90 . 5.jar:na] at com.github.cleverage.elasticsearch.IndexClient.start(IndexClient.java:36)〜[com.clever-age.play2-elasticsearch-0.8-SNAPSHOT.jar:0.8-SNAPSHOT] [错误] application - ElasticSearch:索引准备期间发生了意外的异常 . 索引尚未创建和准备 . java.lang.NullPointerException:null com.com的com.github.cleverage.elasticsearch.IndexService.existsIndex(IndexService.java:378)〜[com.clever-age.play2-elasticsearch-0.8-SNAPSHOT.jar:0.8-SNAPSHOT] play.api.Play $$ anonfun .github.cleverage.elasticsearch.plugin.IndexPlugin.onStart(IndexPlugin.java:58)〜[com.clever-age.play2-elasticsearch-0.8-SNAPSHOT.jar:0.8-SNAPSHOT] $ start $ 1 $$ anonfun $ apply $ mcV $ sp $ 1.apply(Play.scala:88)[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0] at play.api.Play $ $ anonfun $ start $ 1 $$ anonfun $在scala.collection上应用$ mcV $ sp $ 1.apply(Play.scala:88)[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0] . immutable.List.foreach(List.scala:318)[org.scala-lang.scala-library-2.10.2.jar:na] at play.api.Play $$ anonfun $ start $ 1.apply $ mcV $ sp( Play.scala:88)[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0]

有任何想法吗?谢谢

回答(1)

2 years ago

找到解决方案:

在application.conf上添加以下行:

  • elasticsearch.config.resource = elasticsearch.yml

创建此文件conf / elasticsearch.yml并添加

  • path.data:/ Users / Nicolas / IdeaProjects / lavidaporloscolores / elasticsearchdata

在这之后,我不得不再次运行“play dist”来播放我的新配置文件