我在播放应用程序中使用Elasticsearch Play模块,只取得了一半的成功。我能够在本地/嵌入模式下配置和使用它。但是我无法在客户端模式下运行。
我在托管我的播放应用程序的同一个框中设置了elasticsearch服务。我将以下内容添加到我的应用配置中:
#ELASTIC SEARCH MODULE
elasticsearch.local=false
elasticsearch.client=localhost:9200
我在DEV模式下运行。我也试过连接到远程主机但没有成功。在这两种情况下,当我向应用程序发出第一个请求时,它会开始加载各种模块,并在尝试连接到elasticsearch服务时挂起。这是我日志中的一个片段:
[TIME: 2013-08-09 19:59:09] [LOG LEVEL: DEBUG] MorphiaPlugin-1.2.12> reading configuration<BR>
[TIME: 2013-08-09 19:59:15] [LOG LEVEL: INFO] Connected to memcached <BR>
[TIME: 2013-08-09 19:59:15] [LOG LEVEL: INFO] Connecting Play! to Elastic Search in Client Mode<BR>
**[TIME: 2013-08-09 19:59:15] [LOG LEVEL: INFO] Transport Client - Host: localhost Port: 9200**
修改 连接到端口9300工作。但是,一旦我尝试连接,elasticsearch就会抛出 java.io.StreamCorruptedException 。这是堆栈跟踪的片段:
[2013-08-14 09:44:29,405][WARN ][transport.netty] [Kl'rt] exception caught on transport layer [[id: 0x30ec6e1f, /192.168.10.126:45148 => /192.168.10.126:9300]], closing connection
java.io.StreamCorruptedException: invalid internal transport message format
at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27)
at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
答案 0 :(得分:0)
首先,您使用的是play2-elasticsearch模块吗? Play 2之前有一个play-elasticsearch模块,但我假设你指的是play2-elasticsearch模块。
如果您使用的是play2-elasticsearch,您是否尝试过elasticsearch.client =“localhost: 9300 ”? play2-elasticsearch的github存储库中的README.md在其示例中使用端口9300,这是Elasticsearch使用的传输端口,如下所述:http://www.elasticsearch.org/guide/reference/modules/transport/。