ElasticSearch client API

从运行结果看并没有打印节点信息出来

从结果看出来,集群节点信道打印出来了,不过这种方法有个问题,就是当我们连接的节点挂掉了,就没法连接整个集群了,这个时候我们就利用他的一个嗅探的功能。

从这里我们可以看到,通过嗅探功能把集群的三个节点都打印出来了

实际上我们只传入master节点,但是同过master节点探测到其他两个节点信息

但是但应用重启之后master节点挂掉了就不能连接集群了,为了防止容错性,我们就多设置几个节点

参考代码ESTestClient.java

  1 package com.dajiangtai.djt_spider.elasticsearch;
  2
  3 import java.net.InetAddress;
  4 import java.net.UnknownHostException;
  5 import java.util.List;
  6
  7 import org.elasticsearch.client.transport.TransportClient;
  8 import org.elasticsearch.cluster.node.DiscoveryNode;
  9 import org.elasticsearch.common.settings.Settings;
 10 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 11 import org.junit.Before;
 12 import org.junit.Test;
 13 /**
 14  * 获取TransportClient
 15  * @author 大讲台
 16  *
 17  */
 18 public class ESTestClient {
 19
 20     /**
 21      * 测试使用Java API 连接ElasticSearch 集群
 22      *
 23      * @throws UnknownHostException
 24      */
 25     @Test
 26     public void test1() throws UnknownHostException {
 27         // on startup
 28         // 获取TransportClient
 29         TransportClient client = TransportClient
 30                 .builder()
 31                 .build()
 32                 .addTransportAddress(
 33                         new InetSocketTransportAddress(InetAddress
 34                                 .getByName("master"), 9300));
 35
 36         List<DiscoveryNode> connectedNodes = client.connectedNodes();
 37         for (DiscoveryNode discoveryNode : connectedNodes) {
 38             System.out.println("集群节点:"+discoveryNode.getHostName());
 39         }
 40         // on shutdown
 41         client.close();
 42     }
 43
 44     /**
 45      * 生成环境下,ElasticSearch集群名称非默认需要显示设置
 46      *
 47      * @throws UnknownHostException
 48      */
 49     @Test
 50     public void test2() throws UnknownHostException {
 51         Settings settings = Settings.settingsBuilder()
 52                 .put("cluster.name", "escluster").build();
 53         // on startup
 54         // 获取TransportClient
 55         TransportClient client = TransportClient
 56                 .builder()
 57                 .settings(settings)
 58                 .build()
 59                 .addTransportAddress(
 60                         new InetSocketTransportAddress(InetAddress
 61                                 .getByName("master"), 9300));
 62
 63         List<DiscoveryNode> connectedNodes = client.connectedNodes();
 64         for (DiscoveryNode discoveryNode : connectedNodes) {
 65             System.out.println("集群节点:"+discoveryNode.getHostName());
 66         }
 67
 68         // on shutdown
 69         client.close();
 70     }
 71
 72     /**
 73      * 1、启动应用程序之后,client.transport.sniff能保证即使master挂掉也能连接上集群
 74      * 2、master节点挂机同时应用程序重启,则无法连接ElasticSearch集群
 75      *
 76      * @throws UnknownHostException
 77      */
 78     @Test
 79     public void test3() throws UnknownHostException {
 80
 81         // 开启client.transport.sniff功能,探测集群所有节点
 82         Settings settings = Settings.settingsBuilder()
 83                 .put("cluster.name", "escluster")
 84                 .put("client.transport.sniff", true).build();
 85         // on startup
 86         // 获取TransportClient
 87         TransportClient client = TransportClient
 88                 .builder()
 89                 .settings(settings)
 90                 .build()
 91                 .addTransportAddress(
 92                         new InetSocketTransportAddress(InetAddress
 93                                 .getByName("master"), 9300));
 94
 95         List<DiscoveryNode> connectedNodes = client.connectedNodes();
 96         for (DiscoveryNode discoveryNode : connectedNodes) {
 97             System.out.println("集群节点:"+discoveryNode.getHostName());
 98         }
 99
100         // on shutdown
101         client.close();
102     }
103
104     /**
105      * 1、启动应用程序之后,client.transport.sniff能保证即使master挂掉也能连接上集群
106      * 2、设置多节点,防止其中一个节点挂机同时应用程序重启,无法连接ElasticSearch集群问题
107      *
108      * @throws UnknownHostException
109      */
110     @Test
111     public void test4() throws UnknownHostException {
112
113         // 开启client.transport.sniff功能,探测集群所有节点
114         Settings settings = Settings.settingsBuilder()
115                 .put("cluster.name", "escluster")
116                 .put("client.transport.sniff", true).build();
117         // on startup
118         // 获取TransportClient
119         TransportClient client = TransportClient
120                 .builder()
121                 .settings(settings)
122                 .build()
123                 .addTransportAddress(
124                         new InetSocketTransportAddress(InetAddress
125                                 .getByName("master"), 9300))
126                 .addTransportAddress(
127                         new InetSocketTransportAddress(InetAddress
128                                 .getByName("slave1"), 9300))
129                 .addTransportAddress(
130                         new InetSocketTransportAddress(InetAddress
131                                 .getByName("slave2"), 9300));
132
133         List<DiscoveryNode> connectedNodes = client.connectedNodes();
134         for (DiscoveryNode discoveryNode : connectedNodes) {
135             System.out.println("集群节点:"+discoveryNode.getHostName());
136         }
137
138         // on shutdown
139         client.close();
140     }
141 }
时间: 2024-08-10 22:00:17

ElasticSearch client API的相关文章

Elasticsearch java api操作(二)(Java High Level Rest Client)

一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串.兼容所有Elasticsearch版本. 特点:maven引入 使用介绍: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.h

Elasticsearch Java API简要总汇

3.1 集群的连接 3.1.1 作为Elasticsearch节点 [html] view plain copy 代码: import static org.elasticsearch.node.NodeBuilder.nodeBuilder; import org.elasticsearch.client.Client; import org.elasticsearch.node.Node; Node node = nodeBuilder().clusterName("escluster2&q

ElasticSearch Java api 详解_V1.0

原英文文档:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/index.html (各个版本的api) Search部分: 查询有两种方法:query Java API和filter Java API 首先看一个例子: import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.Se

elasticsearch java API 实现搜索样例

查看cluster.version:curl 'centos1:9200'插入:curl -XPUT 'http://localhost:9200/dept/employee/1' -d '{ "empname": "emp1"}'查看index:curl 'centos1:9200/_cat/indices?v'查看1条内容:curl 'centos1:9200/dept/employee/1?pretty'查看所有内容:curl 'centos1:9200/de

[ElasticSearch]Java API 之 索引管理

ElasticSearch为了便于处理索引管理(Indices administration)请求,提供了 org.elasticsearch.client.IndicesAdminClient接口.通过如下代码从 Client 对象中获得这个接口的实现: IndicesAdminClient indicesAdminClient = client.admin().indices(); IndicesAdminClient定义了好几种prepareXXX()方法作为创建请求的入口点. 1. 索引

ElasticSearch Java Api -创建索引

ElasticSearch JAVA API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-index.html 一.生成JSON 创建索引的第一步是要把对象转换为JSON字符串.官网给出了四种创建JSON文档的方法: 1.1手写方式生成 String json = "{" + "\"user\":\"kimchy\"

Elasticsearch Java API (二): index创建删除 cluster管理

Elasticsearch Java API (二): index创建删除 cluster管理  elastic官网有权威的java api 英文的 需要耐心看 这里整理下基本操作 创建maven工程添加依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</ver

Elasticsearch Bulk API批量索引

这篇博客介绍一下Elasticsearch对多个文档进行索引的简便方法.Bulk api的支持可以实现一次请求执行批量的添加.删除.更新等操作.Bulk操作使用的是UDP协议,UDP无法确保与ElasticSearch服务器通信时不丢失数据. 一.Bulk API 使用bulk命令时,REST API以_bulk结尾,批量操作写在json文件中,官网给出的语法格式: action_and_meta_data\n optional_source\n action_and_meta_data\n o

ElasticSearch---------------------&gt;Elasticsearch Clients---------------------&gt;Java REST Client API

Elasticsearch-->Java REST Client API 概述: elasticsearch提供了REST WEB API,所以开发者可以在自己的restful web中调用elasticsearch 关于Java REST Client API的详细叙述,参见官方documentation:Java REST Client API 可以直接使用curl来调用elasticsearch: 基本语法格式:RESTful API with JSON over HTTP 使用示例: 例