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

无法与elasticsearch 8.1(java)建立连接

袁博
2023-03-14

我在docker中运行了elasticsearch 8.1,其中包含以下docker compose文件:

version: '3.7'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.1.0
    container_name: es-node
    environment:
     - xpack.security.enabled=false
     - discovery.type=single-node
    volumes:
      - ./elastic-data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    cap_add:
     - IPC_LOCK
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
  kibana:
    image: docker.elastic.co/kibana/kibana:8.1.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOST=http://localhost:9200
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

我正在尝试使用org.elasticsearch.client.RestClient向es集群发出一个简单的GET请求。

请求:

        Request request = new Request("GET", "_cluster/health");

        try {
            return restClient.performRequest(request).toString();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

Rest客户端初始化:

        var hosts = buildClusterHosts(transportAddresses);
        restClient = RestClient.builder(hosts).build();

        var esTransport = new RestClientTransport(restClient, new JacksonJsonpMapper());
        elasticsearchClient = new ElasticsearchClient(esTransport);

主要方法:

        var es = ElasticEightClient.builder()
                .transportAddresses("localhost:9200")
                .isElasticSniffEnabled(true)
                .build();


        System.out.println("Started elasticsearch with health: " + es.getHealth());

buildClusterHosts()方法正确地构建了一个HttpHost数组(在本例中只有一个),并将其提供给rest客户端生成器。

从理论上讲,这应该足够了,但我一直受到以下因素的影响:java。网ConnectException:连接到[/172.20.0.2:9200]超时,我不知道为什么?

共有1个答案

程凯定
2023-03-14

您似乎混淆了Elasticsearch的传输端口Rest Api端口

您首先需要公开传输层的端口,默认为9300

services:
  elasticsearch:
    ports:
      - 9300:9300

然后更新main方法

var es = ElasticEightClient.builder()
         .transportAddresses("localhost:9200")
         .isElasticSniffEnabled(true)
         .build();


System.out.println("Started elasticsearch with health: " + es.getHealth());
 类似资料:
  • 问题内容: 我正在尝试从MS AD中检索一些信息:特定分支机构的成员,部门名称,职位等。 我使用了很多示例,包括Apache Directory LDAP API 和UnboundID,但是我无法与AD建立连接。 RDN: 为了进行搜索,我使用以下过滤器: 当我使用中的数据创建目录上下文时,出现异常: 如果未指定密码,则会出现以下异常: 我已验证我的帐户未锁定。 根据常见的活动目录LDAP绑定错误

  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt

  • 问题内容: 我在尝试使用以下代码获取数据库连接时遇到问题: 输出的错误信息是: / usr / lib / jvm / java-6-openjdk / bin / java -Didea.launcher.port = 7532 -Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding = UTF-8-类路径/usr/

  • 在使用PHP 5.6.3在Ubuntu 14.04上克隆存储库后,我无法运行PHP composer。phar selfupdate都不是php composer。phar更新。我收到以下消息: 我认为问题应该出在我本地拥有的证书上,但我无法想象如何解决它。 这是作曲家。json:

  • 我发现自己在一个工作,我必须与Windows服务器(2012)-我从来没有问题与建立DB连接,但现在我似乎没有找到任何正确的解决方案。 我将向您展示我的连接php代码: 这是我在浏览器中得到的结果: SQLSTATE[HY000][2002]是一家大型计算机公司。 翻译成英文: 无法建立连接,因为目标机器主动拒绝它。 注意:我下载了mssql驱动程序和sqlsrv驱动程序,并将它们解压缩到/ext

  • 下面是Qpid客户端的配置,使用Camel上下文连接Artemis Broker。 上下文文件正像预期的那样开始,但是在本例中,qpid客户机无法连接到Apache Artemis 2.14.0代理。 我所看到的只是消费者端的一些线程块。 common-context.xml 注意:在使用CAMEL2.20.0版本时,即使在所有上下文都得到的情况下,这个单个xml文件中也有两个camel上下文