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;
    }

  • 相关阅读:
    怎样从server获取图片
    面经
    cordova百度导航插件使用
    swift初探(供objective c开发人员參考)
    右击菜单简单实现
    ios--计时器演示样例:一闪一闪亮晶晶(动画)
    新建cocos2d-xproject
    atititt.java定时任务框架选型Spring Quartz 注解总结
    UIViewController的生命周期及iOS程序运行顺序
    hdu 1162 Eddy&#39;s picture (Kruskal算法,prim算法,最小生成树)
  • 原文地址:https://www.cnblogs.com/xiaocandou/p/8117417.html
Copyright © 2011-2022 走看看