gpt4 book ai didi

java - Elasticsearch TransportClient 连接 [Java]

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:15 25 4
gpt4 key购买 nike

我正在使用MavenJava项目中使用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 中添加更多有关 Transportartion 的信息,或者当前配置是错误的。

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);

/* Verify it cluster is healthy */
ClusterHealthResponse clusterResponse = client
.admin()
.cluster()
.prepareHealth()
.setWaitForGreenStatus()
.setTimeout(TimeValue.timeValueSeconds(5))
.execute() //Error here
.actionGet();

... (more code)
}

elasticsearch.yaml:

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: lib2life
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1

network.host:localhost
network.transport.tcp.port:9300

#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#

(elasticsearch.yaml中的其他信息已注释)

localhost:9200 给我:

{
"name" : "IRINAMW7",
"cluster_name" : "lib2life",
"cluster_uuid" : "-wL1-xdESnyoknD2ZqALDQ",
"version" : {
"number" : "7.1.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "7a013de",
"build_date" : "2019-05-23T14:04:00.380842Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

最佳答案

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

关于java - Elasticsearch TransportClient 连接 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com