我目前正在使用elasticsearch,logstash和kibana。
我得到一个我无法通过的例外。
首先,这是我在浏览器中输入ip:9200 / _cluster / health时得到的结果..
{
"cluster_name":"mr-cluster",
"status":"yellow",
"timed_out":false,
"number_of_nodes":1,
"number_of_data_nodes":1,
"active_primary_shards":5,
"active_shards":5,
"relocating_shards":0,
"initializing_shards":0,
"unassigned_shards":5
}
以下是kibana在尝试请求弹性搜索时获得的内容
Remote Address:ip:9200
Request ip:9200/_all/_search
Request Method:POST
Status Code:200 OK
直到现在似乎没问题。
这是我的logstash配置文件:
input {
gelf {
port => "5000"
}
udp {
port => "5001"
}
}
output {
file {
path => "/home/g/stdout.log"
}
elasticsearch {
cluster => "mr-cluster"
codec => "json"
}
}
当我只使用文件作为输出它完美地工作时,非常简单,logstash工作。 问题是,当我想使用elasticsearch作为输出时,没有任何东西可以工作(事件文件输出),我从elasticsearch获得此异常。我一直在谷歌搜索几个小时,但没有找到解决方案。
以下是例外:
[2014-05-21 09:18:35,060][WARN ][http.netty ] [mr-node-elasticsearch] Caught exception while handling client http traffic, closing connection [id: 0x27d0ccce, /0:0:0:0:0:0:0:1:44164 => /0:0:0:0:0:0:0:1:9200]
java.lang.IllegalArgumentException: empty text
at org.elasticsearch.common.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:97)
at org.elasticsearch.common.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:62)
at org.elasticsearch.common.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:75)
at org.elasticsearch.common.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:189)
at org.elasticsearch.common.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:101)
at org.elasticsearch.common.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
at org.elasticsearch.common.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
感谢你们帮助我们!
答案 0 :(得分:4)
当我收到此错误时,我将端口从9200更改为9300.希望它适合您。
注意:我是弹性搜索的初学者。
可能这不会解决您的问题,但它可能会帮助搜索相同错误消息的其他搜索者被引导到此页面。
答案 1 :(得分:2)
配置elasticsearch的方式(仅使用群集名称)会触发群集的多播发现。您可以尝试直接在群集中进行配置,看看是否有效:
elasticsearch {
host=>"ip_here"
port=>9200
protocol=>http
}
您的群集输出也表示您的群集处于“黄色”状态。状态,所以你可能想知道那里发生了什么 - 你希望它是&#34;绿色&#34;。
答案 2 :(得分:1)
我犯的错误在于用于单播发现的Elastic实例的配置。我无意中将端口号9200添加到单播主机列表的配置中。
不正确:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["localhost.localdomain:9200"]
正确:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["localhost.localdomain"]
答案 3 :(得分:0)
将端口更改为9300可以正常工作。但最好检查弹性搜索服务。它可能是。并且索引不会发生,因此这个例外。我也是ELK堆栈的初学者。
此外,如果您不想更改端口,请登录每个elasticsearch节点并运行/etc/init.d/elasticsearch start