• ElastaticSearch es客户端 TransportClient


    TransportClient

    TransportClient客户端,官方在es 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它.
    es 7.0及以上的版本,请使用 RestHighLevelClient。
    如果项目中使用的es版本不高,可以使用 TransportClient。

    依赖

            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>5.5.1</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>5.5.1</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.plugin</groupId>
                <artifactId>transport-netty4-client</artifactId>
                <version>5.5.1</version>
            </dependency>
    

    初始化TransportClient 客户端

    
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    
    public class EsTransportClient {
    
        /**
         * 初始化TransportClient 客户端
         *
         * @param clusterName es集群名称
         * @param ip es的ip地址
         * @param port es的端口
         * @return
         */
        public static TransportClient getClient(String clusterName, String ip, int port) {
            Settings settings = Settings.builder()
                    .put("cluster.name", clusterName)
                    .put("client.transport.sniff", true)
                    .build();
    
            TransportClient transportClient = null;
            try {
                transportClient = new PreBuiltTransportClient(settings);
                transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), port));
                return transportClient;
            } catch (UnknownHostException e) {
                log.error("UnknownHostException exception.");
            }
            return transportClient;
        }
    
    
        /**
         * 多节点的es集群
         * @param nodes 格式为:ip:端口,多个节点用逗号隔开  ,比如 10.123.666.1:9300,10.123.666.2:9300
         * @param clusterName 集群名称
         * @return
         */
        public static TransportClient getClientByNodes(String nodes, String clusterName) {
            String[] hosts = nodes.split(",");
            Settings settings = Settings.builder().put("cluster.name", clusterName)
                    .put("client.transport.sniff", true)
                    .put("client.transport.ping_timeout", "10s")
                    .build();
            TransportClient esClient = null;
    
            try {
                esClient = new PreBuiltTransportClient(settings);
                for (String host : hosts) {
                    String[] hostAndPort = host.split(":");
                    esClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostAndPort[0]),
                                Integer.parseInt(hostAndPort[1])));
                }
            } catch (NumberFormatException | UnknownHostException e) {
                log.error("getClientByNodes exception.", e);
            }
            return esClient;
        }
    
    }
    
  • 相关阅读:
    31 把数组排成最小的数 + 仿函数的写法就记忆这个就行了
    30 整数中1出现的次数(从1到n整数中1出现的次数)这题很难要多看*
    29 连续子数组的最大和
    c/c++ struct的大小以及sizeof用法
    28 最小的K个数
    27 数组中出现次数超过一半的数字
    26 字符串的排列
    Python 实例2—购物车
    python_threading模块实现多线程详解(转)
    Ubuntu 16.04 安装Postman
  • 原文地址:https://www.cnblogs.com/expiator/p/15735701.html
Copyright © 2020-2023  润新知