Java连接Elasticsearch集群

package cn.test;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
public class ElkTest {
//  private static final String CLUSTER_NAME = "cluster_name";
    public static final String CLUSTER_NAME = "elasticsearch"; //实例名称
//  private static final String IP = "127.0.0.1";
    private static final String IP = "192.168.0.29";
    private static final int PORT = 9200;  //端口
    //1.设置集群名称:默认是elasticsearch,并设置client.transport.sniff为true,使客户端嗅探整个集群状态,把集群中的其他机器IP加入到客户端中
    /*
    //对ES1.6有效
    private static Settings settings = ImmutableSettings
            .settingsBuilder()
            .put("cluster.name",CLUSTER_NAME)
            .put("client.transport.sniff", true)
            .build();
    */
    //对ES2.0有效
    private static Settings settings = Settings
            .settingsBuilder()
            .put("cluster.name",CLUSTER_NAME)
            .put("client.transport.sniff", true)
            .build();
    //创建私有对象
    private static TransportClient client;  

    //反射机制创建单例的TransportClient对象  ES1.6版本
//    static {
//        try {
//            Class<?> clazz = Class.forName(TransportClient.class.getName());
//            Constructor<?> constructor = clazz.getDeclaredConstructor(Settings.class);
//            constructor.setAccessible(true);
//            client = (TransportClient) constructor.newInstance(settings);
//            client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }  

    //ES2.0版本
    static {
        try {
            client = TransportClient.builder().settings(settings).build()
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }  

    //取得实例
    public static synchronized TransportClient getTransportClient(){
        return client;
    }  

    //为集群添加新的节点
    public static synchronized void addNode(String name){
        try {
            client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }  

    //删除集群中的某个节点
    public static synchronized void removeNode(String name){
        try {
            client.removeTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
    public static void main(String args[]){
        getTransportClient();
    }
}

  

时间: 2024-10-31 04:17:44

Java连接Elasticsearch集群的相关文章

java连接redis集群

http://m.blog.csdn.net/koushr/article/details/50956870 连接redis数据库(非集群模式) public static void main(String[] args) { JedisPoolConfig poolConfig = new JedisPoolConfig(); // 最大连接数 poolConfig.setMaxTotal(2); // 最大空闲数 poolConfig.setMaxIdle(2); // 最大允许等待时间,如

java 连接 redis集群时报错:Could not get a resource from the pool

由于弄这个的时候浪费了太多的时间,所以才记录下这个错,给大伙参考下 检查了一下,配置啥的都没问题的,但在redis集群机器上就可以,错误如下: Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 原因: 是因为我在创集群的时候的ip地址是:127.0.0.1,不是本机的电脑访问的话是不能访问的,

ES7.4 学习日记——Java REST Client :连接到集群

1.ES7版本变化 废弃了type,没有类型的概念: 废弃TransportClient,只能使用restclient. 2.Maven依赖 连接客户端主要有Rest Low Level Client和Rest High Level Client两种可以使用,两者的主要区别在于: Rest Low Level Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串.兼容所有ES版本.最小Java版本要求为1.7. Rest High Le

ElasticSearch集群服务器配置

一.安装 简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明. 二.启动 1.自带脚本启动 1)bin/elasticsearch,不太任何参数,默认在前端启动 2)bin/elasticsearch-d,带参-d,表示在后台作为服务线程启动 还可以设置更多的参数:bin/elasticsearch-Xmx2g-Xms2g-Des.index.store.type=memory--node.name=my-node 注意:如果是在局域网中运行elasticsea

Elasticsearch集群知识笔记

Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_cluster/health response结果: { "cluster_name": "format-es", "status": "green", ... } 这里的status有3种状态,分别是green(所有主分片和复制分片都可用

ElasticSearch集群搭建

一.前言 先介绍ElasticSearch的几个核心概念. 集群(cluster): 一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能.一个集群由一个唯一的名字标识,这个名字默认就是"elasticsearch".这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群. 节点(node): 一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能.和集群类似,一个节点也是由一个名字来标识的,默

【ELK】03、ElasticSearch集群

上一篇主要学习了ES及其插件的安装,这一篇主要学习ES集群及其节点管理 一.ES集群概述 1.ES集群简介 ES就是为高可用和可扩展而生的,服务器的扩展可以通过购置性能更强的服务器(垂直扩展或者向上扩展,Vertical Scale/Scaling Up),亦或是通过购置更多的服务器(水平扩展或者向外扩展,Horizontal Scale/Scaling Out)来完成.尽管ES能够利用更强劲的硬件,垂直扩展毕竟还是有它的极限.真正的可扩展性来自于水平扩展 - 通过向集群中添加更多的节点来分布负

手把手教你搭建一个 Elasticsearch 集群

为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时刻宕掉了,

搭建一个Elasticsearch集群

一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时