当前位置: 首页 > 知识库问答 >
问题:

将Spring与Docker中的Elasticsearch连接

麹凯捷
2023-03-14

我必须将我的Spring客户端与Elasticsearch连接,Elasticsearch的图像已由Elastic在Docker Hub中的官方ES 2.4.6图像拍摄,但当我尝试运行容器时,Docker控制台向我报告以下错误:

[Glitch]无法连接到节点[{{transport}-1}{localhost}{127.0.0.1:9300}],已从节点列表中删除

应用程序。我的Spring项目的属性是:

spring.data.elasticsearch.cluster-nodes=localhost:9300
index.v = default
server.port = 8443

还有码头工人。yml是:

version: "2.2"

services:
    elk:
        image: cvazquezlos/elk:2.4.6
        ports:
            - 5000:5000
            - 5601:5601
            - 9200:9200
            - 9300:9300
        volumes:
            - elk-data:/var/lib/elasticsearch

    testloganalyzer:
        image: cvazquezlos/testloganalyzer
        ports:
            - 8443:8443

volumes: 
    elk-data:

如果我在没有Docker的情况下运行后端,它会按预期工作,但是当我在没有Docker的情况下运行后端时,会报告我上述错误。完全错误是:

failed to connect to node [{#transport#-1}{localhost}{127.0.0.1:9300}], removed from nodes list

org.elasticsearch.transport.ConnectTransportException: [][127.0.0.1:9300] connect_timeout[30s]
        at org.elasticsearch.transport.netty.NettyTransport.connectToChannelsLight(NettyTransport.java:967) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:933) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.netty.NettyTransport.connectToNodeLight(NettyTransport.java:906) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.TransportService.connectToNodeLight(TransportService.java:267) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler.doSample(TransportClientNodesService.java:390) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.sample(TransportClientNodesService.java:336) [elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$ScheduledNodeSampler.run(TransportClientNodesService.java:369) [elasticsearch-2.4.6.jar!/:2.4.6]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]
Caused by: java.net.ConnectException: Connection refused: localhost/127.0.0.1:9300
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_151]
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_151]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) ~[netty-3.10.6.Final.jar!/:na]
        ... 3 common frames omitted

共有2个答案

颛孙凯定
2023-03-14

我认为您缺少docker compose配置中的网络部分,请尝试以下操作:

version: "2.2"

services:
    elk:
        image: cvazquezlos/elk:2.4.6
        ports:
            - 5000:5000
            - 5601:5601
            - 9200:9200
            - 9300:9300
        networks:
            - elk-network
        volumes:
            - elk-data:/var/lib/elasticsearch

    testloganalyzer:
        image: cvazquezlos/testloganalyzer
        ports:
            - 8443:8443
        networks:
            - elk-network

volumes: 
    elk-data:

networks:
    elk-network:
        driver: bridge
岳英耀
2023-03-14

当SpringBoot服务在docker中工作时,它无法将localhost解析为ES主机。在这种情况下,您还可以使用链接属性,如下所示:

testloganalyzer部分添加链接选项:

testloganalyzer:
    image: cvazquezlos/testloganalyzer
    ports:
        - 8443:8443
    links:
        - elk:elk

首先是服务,其次是别名。

接下来在application.properties中更改it引用:

spring.data.elasticsearch.cluster-nodes=elk:9300
 类似资料:
  • 即使我的elastichead容器正在运行,我的elastichead也没有连接。我不能理解这个问题。 容器ID图像 命令创建状态端口名称117ba87ad874 mdillon/postgis: 11 "docker-entrypoint. s..."9小时前最多4小时 0.0.0.0:5432- 但在运行弹性头之后,仍然没有连接。我的系统是Windows10家庭版。

  • 我的Elasticsearch docker撰写文件就是这样 我有一个spring启动应用程序,application.properties是 然而,我得到了错误 问题:1)如何从外部连接到带Spring靴的elasticsearch?2) 如果docker将elastic和springboot应用程序组合在一起,它们将位于同一个网络上。要连接到弹性搜索,我应该对spring.data.elast

  • 我在使用Docker使用mysql运行spring boot时遇到了问题。在没有Docker的情况下,它在本地运行良好。我的dockerfile docker-compose.yml文件 运行时错误:docker-compose up-build

  • 我是新来的docker和有一个简单的DW(dropwizard)应用程序连接到elasticsearch,其中已经运行在docker使用docker-compose.yml,其中有以下内容。 弹性搜索的Docker-compose.yml 注意:我将8200和8300公开为主机(本地mac系统)上的ES端口 现在,当我在本地主机上运行连接到8200中ES的DW应用程序时,一切都正常了,但现在我正在

  • 我是ElasticSearch的新手... 非常喜欢API(特别是ElasticsearchTemplate&支持单元测试)... 使用ElasticSearch 5.5.0(以下链接内联了完整的代码,也可以作为可下载的zip文件提供)执行此示例: https://www.mkyong.com/spring-boot/spring-boot--data-elasticsearch-example/

  • 我已经使用aws sam local设置了一个api网关/aws lambda对,并确认运行后可以成功调用它 sam本地启动api 然后,我在docker容器中添加了一个本地Dynamodb实例,并使用aws cli在其上创建了一个表 但是,在将代码添加到lambda以写入我收到的Dynamodb实例之后: 2018-02-22T11:13:16.172Z ed9ab38e-fb54-18a4-0