这两天来实习,遇到了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;
}
}
}