zoukankan      html  css  js  c++  java
  • ElasticSearch(二) Transport Client Connection By Domain

    /**
    * 初始化EsClient
    *
    * @param esClusterDomain
    * @param esClusterName
    */
    private static void initClient(String esClusterDomain, String esClusterName) {

    String url = String.format("%s%s", esClusterDomain, "/_nodes/transport");

    if (!url.contains("http")) {
    url = String.format("%s%s", "http://", url);
    }

    List<EsNodeInfoBO> esNodeInfos = getEsNodeInfo(url);

    if (CollectionUtils.isEmpty(esNodeInfos)) {
    esNodeInfos = getEsNodesByIp();

    if (CollectionUtils.isEmpty(esNodeInfos)) {
    logger.error("[[title=initClient]]Es 启动失败,集群不存在");
    return;
    }
    }

    String esNodeInfoLog = JSON.toJSONString(esNodeInfos);
    logger.info("[[title=initClient]]{}", esNodeInfoLog);

    logger.info("[[title=initClient]]clustername={}", esClusterName);
    Settings settings = Settings.builder().put("client.transport.sniff", true).put("cluster.name", esClusterName)
    .build();
    try {
    client = new PreBuiltTransportClient(settings);

    for (EsNodeInfoBO esNode : esNodeInfos) {
    client.addTransportAddress(
    new InetSocketTransportAddress(InetAddress.getByName(esNode.getIp()), esNode.getProt()));
    }
    } catch (UnknownHostException e) {
    logger.error("[[title=initClient]]clustername={}", esClusterName, e);
    }

    Runtime.getRuntime().addShutdownHook(new Thread(() -> {
    client.close();
    }));

    }

    /**
    * 获取Es集群节点
    *
    * @param url
    * @return
    */
    private static List<EsNodeInfoBO> getEsNodeInfo(String url) {
    List<EsNodeInfoBO> esNodes = new ArrayList<>();

    if (StringUtils.isBlank(url)) {
    return esNodes;
    }

    try {
    String uriResponse = UriUtil.getUrlResponseBybasicAuth(esClusterDomain, esUserName, esPassword, url);

    logger.info("[[title=getEsNodeInfo]] 获取到的json串为{}", uriResponse);

    JSONObject jsonObj = JSON.parseObject(uriResponse);

    if (!jsonObj.containsKey("nodes")) {
    return esNodes;
    }

    JSONObject nodes = jsonObj.getJSONObject("nodes");

    for (Map.Entry<String, Object> entry : nodes.entrySet()) {
    JSONObject value = (JSONObject) entry.getValue();
    String transportAddress = value.getString("transport_address");

    String[] nodeInfos = transportAddress.split(":");

    if (nodeInfos.length == 2) {
    EsNodeInfoBO esNodeInfoBo = new EsNodeInfoBO();
    esNodeInfoBo.setIp(nodeInfos[0]);
    esNodeInfoBo.setProt(Integer.parseInt(nodeInfos[1]));
    esNodes.add(esNodeInfoBo);
    }
    }
    } catch (Exception e) {
    logger.error("[[title=getEsNodeInfo]]获取EsNode 失败}", e);
    }

    return esNodes;
    }

  • 相关阅读:
    zstack(一)运行及开发环境搭建及说明(转载)
    ZStack深度试用:部署、架构与网络及其与OpenStack的对比
    saltops 安装及相关环境安装
    windows下安装rabbitmq的步骤详解
    SQLServer就更新并发处理的解决方案及测试!
    mysql 8.0.20安装教程,mysql详细安装教程
    .NET中的简单的并行
    四、VSCode调试vue项目
    三、使用VSCode配置简单的vue项目
    二、windows下搭建vue开发环境+IIS部署
  • 原文地址:https://www.cnblogs.com/xiaocandou/p/8117417.html
Copyright © 2011-2022 走看看