這兩天來實習,遇到了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;
}
}
}