zoukankan      html  css  js  c++  java
  • Elasticsearch教程(六) elasticsearch Client创建

    Elasticsearch  创建Client有几种方式。

    首先在 Elasticsearch  的配置文件 elasticsearch.yml中。定义cluster.name。如下:

    cluster.name: sojson-application

    创建方式一:

    import static org.elasticsearch.node.NodeBuilder.*;
    //节点方式创建。
    Node node = nodeBuilder().clusterName("yourclustername").node();
    Client client = node.client();
    /*
    还有很多节点方式的创建方式,查看下面的官网地址。
    https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/node-client.html
    */

    创建方式二:

    /**
     * 指定 ip地址创建
     */
    // on startup
    Client client = TransportClient.builder().build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

    // on shutdown
    client.close();

    创建方式三:

    //按集群名称创建
    Settings settings = Settings.settingsBuilder()
            .put("cluster.name", "sojson-application").build();
    Client client = TransportClient.builder().settings(settings).build();
    //Add transport addresses and do something with the client...

    创建方式四:

    //同一内网Ip段,嗅的方式自己查找,组成集群。
    Settings settings = Settings.settingsBuilder()
            .put("client.transport.sniff", true).build();
    TransportClient client = TransportClient.builder().settings(settings).build();
    /*
    客户端允许嗅其余的集群,它将数据节点添加到列表的机器使用。在这种情况下要注意,将使用的IP地址的其他节点开始(“publish”地址)。启用它,设置client.transport.sniff为 true:
    */

    其实还有很多方式。具体使用哪种,看自己需求

    工具类:

    package com.sojson.core.elasticsearch.utils;

    import java.net.InetAddress;

    import org.elasticsearch.client.Client;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;

    import com.sojson.common.utils.LoggerUtils;
    import com.sojson.core.config.IConfig;

    public class ESTools {
        
        public final static Client client =  build();
        
        public final static Class clazz = ESTools.class;
        

        
        /**
         * 创建一次
         * @return
         */
        private static Client build(){
            if(null != client){
                return client;
            }
            Client client = null;
            String ip = IConfig.get("es_ip");
            LoggerUtils.fmtDebug(clazz, "获取ESIP地址:%s", ip);
            try {
                LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 开始");
                Settings settings = Settings
                    .settingsBuilder()
                        .put("cluster.name","sojson-application")
                            .put("client.transport.sniff", true)
                                .build();
                client = TransportClient.builder().settings(settings).build()
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), 9300));
                LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 结束");
            } catch (Exception e) {
                LoggerUtils.fmtError(clazz, e, "创建Client异常");
            }
            return client;
        }
        
        /**
         * 关闭
         */
        public static void close(){
            if(null != client){
                try {
                    client.close();
                } catch (Exception e) {
                    
                }
            }
        }
        
    }

  • 相关阅读:
    python开发线程:死锁和递归锁&信号量&定时器&线程queue&事件evevt
    python开发线程:线程&守护线程&全局解释器锁
    python开发进程:共享数据&进程池
    python开发进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型
    学习笔记之Model selection and evaluation
    学习笔记之scikit-learn
    近期学习小结
    学习笔记之Problem Solving with Algorithms and Data Structures using Python
    Leetcode 3. Longest Substring Without Repeating Characters
    学习笔记之C / C++
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6879096.html
Copyright © 2011-2022 走看看