如何使用 Elasticsearch Node Client Java 连接到远程服务器
Posted
技术标签:
【中文标题】如何使用 Elasticsearch Node Client Java 连接到远程服务器【英文标题】:How to connect to remote server using Elasticsearch Node Client Java 【发布时间】:2015-01-29 20:38:33 【问题描述】:我正在尝试使用 Elasticsearch Java NodeBuilder 客户端连接到我的服务器。但是我没有看到任何指定服务器地址和端口的选项(就像我们可以在传输客户端中使用addNewTransportAddress("serveraddress", port))
一样。如何让节点客户端连接到我的服务器?代码如下,我在哪里提到服务器地址连接到?
//On Startup
Node node = nodeBuilder()
.clusterName("elasticsearch")
.data(false) //No shards allocated; or can set client to true
.client(true) //No shards allocated; or can set data to false
.node();
//Node Client
Client client = node.client();
//Get API
GetResponse response = client.prepareGet("indexname", "type", "id")
.execute()
.actionGet();
System.out.println("----------------Index Output Begin----------------");
System.out.println("Index Name: " + response.getIndex());
System.out.println("Type: " + response.getType());
System.out.println("Document ID: " + response.getId());
System.out.println("Document Version: " + response.getVersion());
System.out.println("Source: " + response.getSourceAsString());
【问题讨论】:
【参考方案1】:节点客户端基于多播。 您的客户端和节点之间的网络必须位于启用多播的网络中。然后客户端将根据集群名称“发现”节点。
如果你需要连接到远程服务器(通过指定IP地址),你必须使用transport client。
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "myClusterName").build();
Client client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("host1", 9300))
.addTransportAddress(new InetSocketTransportAddress("host2", 9300));
【讨论】:
【参考方案2】:当我使用 ImmutableSettings 时,我得到了"ImmutableSettings cannot be resolved"
。
我的代码是:
Node node =nodeBuilder()
.settings(ImmutableSettings.settingsBuilder().put("path.home", "/home/amit/elasticsearch-2.1.0/bin"))
.client(true)
.node();
Client client = node.client();
【讨论】:
我遇到了同样的问题。看来 ImmutableSettings 在 2.2.0 版本中被 Settings 取代 节点节点= NodeBuilder.nodeBuilder().settings(Settings.builder() .put("path.home", "/media/rajnish/7F58-E3202/elasticsearch-2.1.0") ) .client(false) .local(true) .node(); //创建客户端对象。客户端client = node.client();以上是关于如何使用 Elasticsearch Node Client Java 连接到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Elasticsearch Node Client Java 连接到远程服务器