为了账号安全,请及时绑定邮箱和手机立即绑定

Elasticsearch TransportClient 连接 [Java]

Elasticsearch TransportClient 连接 [Java]

隔江千里 2023-03-31 16:59:52
我在使用Maven 的Java 项目中使用Elasticsearch:... <elasticsearch.version>6.7.0</elasticsearch.version>...    <!-- Elasticsearch -->    <dependency>        <groupId>org.elasticsearch</groupId>        <artifactId>elasticsearch</artifactId>        <version>${elasticsearch.version}</version>    </dependency>    <dependency>        <groupId>org.elasticsearch.client</groupId>        <artifactId>transport</artifactId>        <version>${elasticsearch.version}</version>    </dependency>    <dependency>        <groupId>org.elasticsearch.plugin</groupId>        <artifactId>transport-netty4-client</artifactId>        <version>${elasticsearch.version}</version>    </dependency>    <dependency>        <groupId>org.apache.logging.log4j</groupId>        <artifactId>log4j-to-slf4j</artifactId>        <version>2.8.2</version>    </dependency>    <!-- Elasticsearch -->        当我尝试初始化 TransportClient 以便为文档编制索引时,出现错误:    NoNodeAvailableException[None of the configured nodes are available:     [{#transport#-1}{BHMBbfcrSUOM_Pyaf1LcnA}{localhost}{127.0.0.1:9300}]]也许需要在 config/elasticsearch.yaml 中添加更多关于传输的信息,或者当前配置是错误的。Java代码:    TransportAddress address;    TransportClient client;    Settings settings;    try {        address = new TransportAddress(InetAddress.getByName("localhost"), 9300);        settings = Settings                    .builder()                    .put("cluster.name", "lib2life")                    .put("client.transport.sniff", true)                    .build();        /* Initiate Transport Client */        client = new PreBuiltTransportClient(settings)                    .addTransportAddress(address);    }
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我解决了这个问题。问题是我使用的是带有 TransportClient 的 Elasticsearch 6.7.0 版本,它已被弃用并被 RestHighLevelClient 取代。此外,我必须使用端口 9200 并取消注释 http.port: 9200 和 discovery.seed_hosts: ["host1", "host2"] from elasticsearch.yaml



查看完整回答
反对 回复 2023-03-31
?
精慕HU

TA贡献1845条经验 获得超8个赞

问题在于您的端口配置,您正在使用端口9300进行 REST 调用,该端口实际上用于 elasticsearch 集群中的节点间通信。请更改下面的 java 代码以使用该端口9200

address = new TransportAddress(InetAddress.getByName("localhost"), 9200);
查看完整回答
反对 回复 2023-03-31
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信