ES 用作文字过滤系统

这两天来实习,遇到了ESUtil.java 于是想弄明白些---------废话不多说

划重点:1.面向文档型数据库,简单来说就是为了实现搜索、过滤、排序等功能对一堆文字、数据建立索引,但不会存储他们。这是一种不需要面对数据的思考方式(没有格式),这也是es可以执行复杂的全文搜索的原因。

                2.因为ES应用JSON,是NoSQL(键----值对)的格式,比表结构的结构精简许多

                3.ES可以用get、post、delete等方式进行数据操作,或者通过match匹配、filter过滤器、range范围查询等

然后来上代码:

class ESUtil{


    static Client getESClient(){

            try{
                /**
                *设置集群名称
                */
                Settings  settings =Settings.builder().put("client.transport.sniff",true)
                    //.put("cluster.name","dc-elastic") 
                //探测集群中机器状态  
                  .put("cluster.name","bdp-es")
                  .build();
                //给定客户端Ip地址
            String esIps="10.25.241.22:8301,10.25.242.60:8301,10.25.243.14:8301,10.25.243.15:8301,10.25.243.16:8301,10.25.243.17:8301";
            //String esIps ="10.168.96.62:9300";
            //根据Ip建立Client
            client = new PreBuiltTransportClient(settings);
            //根据IP和port建立InetSocketTransportAddress
             if (esIps != null) {
                String[] esIpArr = esIps.split(",");
                for (String ipPort : esIpArr) {
                    String[] tmpArr = ipPort.split(":");
                    if (tmpArr.length != 2) {
                        continue;
                    }
                    String ip = tmpArr[0];
                    int tcpPort = Integer.valueOf(tmpArr[1]);
                    client.addTransportAddress(new                 
                    InetSocketTransportAddress(InetAddress.getByName(ip), tcpPort));
                }
            }
             }catch(Exception ex){
                    ex.printStackTrace();
                    logger.info("获取es client失败"+ ex.getMessage());
                    }
                    return client;
            }
        

        }


}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章