java - 使用 found 通过 SSL 连接到 elasticsearch

标签 java ssl elasticsearch

我正在尝试通过 SSL 连接到我的 elasticsearch 服务器并尝试了很多不同的方法但无法解决问题。 目前我正在使用 elasticsearch 2.3.3 和 jdk1.7.0_79。

编辑:首先,我尝试使用以下代码在 Netbeans 中使用 Elastic JAVA Api 进行连接:

Settings settings = Settings.settingsBuilder()
    .put("cluster.name", CLUSTER_NAME)
    .put("shield.user", "USER:PASSWORD")
    .put("transport.ssl.keystore.path", "/usr/share/elasticsearch/bin/shield/KEYSTORE.jks")
    .put("transport.ssl.keystore.keystore_password", KEYSTORE_PASSWORD)
    .put("shield.transport.ssl", true).build();

Client client = TransportClient.builder().settings(settings).build()
    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(HOST), 9300));

前面的示例在我的弹性本地主机服务器上运行良好,但是当我尝试将它迁移到使用 SSL 的 Web 服务器时,它会每 5 秒输出一次以下内容:

976 [main] DEBUG org.elasticsearch.client.transport  - [Miguel Espinosa] adding address [{#transport#-1}{IP_ADDRESS}{HOST/IP_ADDRESS:9300}]
1059 [main] DEBUG org.elasticsearch.transport.netty  - [Miguel Espinosa] connected to node [{#transport#-1}{IP_ADDRESS}{HOST/IP_ADDRESS:9300}]
1200 [elasticsearch[Miguel Espinosa][generic][T#1]] DEBUG org.elasticsearch.transport.netty  - [Miguel Espinosa] disconnecting from [{#transport#-1}{IP_ADDRESS}{HOST/IP_ADDRESS:9300}], channel closed event
1238 [main] INFO org.elasticsearch.client.transport  - [Miguel Espinosa] failed to get node info for {#transport#-1}{IP_ADDRESS}{HOST/IP_ADDRESS:9300}, disconnecting...
NodeDisconnectedException[[][HOST/IP_ADDRESS:9300][cluster:monitor/nodes/liveness] disconnected]  

在那之后,现在我正在尝试使用 found-shield 连接到 elastic但是当我运行应该工作的示例时,它输出以下内容:

[2016-07-04 08:38:10,455][INFO ][no.found.elasticsearch.example.TransportExample] Connecting to cluster: [CLUSTER_ID] via [CLUSTER_ID.REGION.aws.found.io:9343] using ssl:[true]
[2016-07-04 08:38:10,688][INFO ][org.elasticsearch.plugins] [Neuronne] modules [], plugins [shield], sites []
[2016-07-04 08:38:10,983][INFO ][org.elasticsearch.transport] [Neuronne] Using [org.elasticsearch.shield.transport.ShieldClientTransportService] as transport service, overridden by [shield]
[2016-07-04 08:38:10,987][INFO ][org.elasticsearch.transport] [Neuronne] Using [org.elasticsearch.shield.transport.netty.ShieldNettyTransport] as transport, overridden by [shield]
[2016-07-04 08:38:12,051][INFO ][org.elasticsearch.client.transport] [Neuronne] failed to get node info for {#transport#-1}{IP_ADDRESS}{CLUSTER_ID.REGION.aws.found.io/IP_ADDRESS:9343}, disconnecting...
org.elasticsearch.transport.RemoteTransportException: [Failed to deserialize exception response from stream]
org.elasticsearch.transport.TransportSerializationException: Failed to deserialize exception response from stream
        at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:200) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:136) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) ~[netty-3.10.5.Final.jar:na]
        at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) ~[netty-3.10.5.Final.jar:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_79]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_79]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79]
Caused by: java.io.IOException: failed to read exception for id [40]
        at org.elasticsearch.ElasticsearchException.readException(ElasticsearchException.java:246) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.common.io.stream.StreamInput.readThrowable(StreamInput.java:506) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:198) ~[elasticsearch-2.3.3.jar:2.3.3]
        ... 30 common frames omitted
Caused by: java.lang.reflect.InvocationTargetException: null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_79]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_79]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_79]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_79]
        at org.elasticsearch.ElasticsearchException.readException(ElasticsearchException.java:244) ~[elasticsearch-2.3.3.jar:2.3.3]
        ... 32 common frames omitted
Caused by: java.lang.IndexOutOfBoundsException: Readable byte limit exceeded: 118
        at org.jboss.netty.buffer.AbstractChannelBuffer.readByte(AbstractChannelBuffer.java:236) ~[netty-3.10.5.Final.jar:na]
        at org.elasticsearch.transport.netty.ChannelBufferStreamInput.readByte(ChannelBufferStreamInput.java:132) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.common.io.stream.StreamInput.readString(StreamInput.java:254) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.common.io.stream.StreamInput.readOptionalString(StreamInput.java:233) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.ElasticsearchException.<init>(ElasticsearchException.java:88) ~[elasticsearch-2.3.3.jar:2.3.3]
        at org.elasticsearch.index.query.QueryParsingException.<init>(QueryParsingException.java:114) ~[elasticsearch-2.3.3.jar:2.3.3]
        ... 37 common frames omitted

我是 elasticsearch 的新手,所以如果有什么遗漏请问我,我会尽快为您提供。 我还检查了其他类似的问题,例如 SSL Elasticsearch

谢谢,伊曼纽尔

最佳答案

如文档中所述,您应该同步 JDK 版本:

In few locations in Elasticsearch, Java’s native serialization is used (IP addresses, exceptions, and so forth). Unfortunately, Oracle has been known to change the serialization format between minor releases, leading to strange errors. This happens rarely, but it is best practice to keep the JVM versions identical between client and server.

您可以阅读更多here

关于java - 使用 found 通过 SSL 连接到 elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180324/

相关文章:

java.lang.ExceptionInInitializerError 引起的 : com. fastxml.jackson.databind.JsonMappingException : Jackson version is too old 2. 5.1

mysql - 如何将此 SQL 查询转换为 Elasticsearch 查询?

macos - 如何在Mac上创建本地Elasticsearch集群

ssl - Play Framework - 用于处理 SSL 的 lighttpd

java - 使用 VAULT 配置 Wildfly 8.0.0 以加密 keystore 密码时出现无效的 Keystore 格式异常

php - 如何通过 PHP 发送带有 pem 证书的 curl 请求?

elasticsearch - 谁能帮我从 Elasticsearch 中查询

java - 如何反转HashMap?

java - DBUnit 和 Spring Boot - 在集成测试中请求时可能无法导入或不存在数据

java - 如何使用 Java 加载插件类?