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

        }


}

 

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