java连接ElasticSearch集群操作
我就废话不多说了,大家还是直接看代码吧~
/*
*es配置类
*
*/
@Configuration
publicclassElasticSearchDataSourceConfigurer{
privatestaticfinalLoggerLOG=LogManager.getLogger(ElasticSearchDataSourceConfigurer.class);
@Bean
publicTransportClientgetESClient(){
//设置集群名称
Settingssettings=Settings.builder().put("cluster.name","bigData-cluster").put("client.transport.sniff",true).build();
//创建client
TransportClientclient=null;
try{
client=newPreBuiltTransportClient(settings)
.addTransportAddress(newInetSocketTransportAddress(InetAddress.getByName(""),9300));//集群ip
LOG.info("ESClient连接建立成功");
}catch(UnknownHostExceptione){
LOG.info("ESClient连接建立失败");
e.printStackTrace();
}
returnclient;
}
}
/**
*SimpletoIntroduction
*
*@Description:[添加类]
*/
@Repository
publicclassUserDaoImplimplementsuserDao{
privatestaticfinalStringINDEXNAME="user";//小写
privatestaticfinalStringTYPENAME="info";
@Resource
TransportClienttransportClient;
@Override
publicintaddUser(User[]user){
IndexResponseindexResponse=null;
intsuccessNum=0;
for(inti=0;i
/**
*批量插入
*/
publicstaticvoidbathAddUser(TransportClientclient,Listusers){
BulkRequestBuilderbulkRequest=transportClient.prepareBulk();
for(inti=0;i
补充知识:使用java创建ES(ElasticSearch)连接池
1.首先要有一个创建连接的工厂类
packagecom.aly.util;
importorg.apache.commons.pool2.PooledObject;
importorg.apache.commons.pool2.PooledObjectFactory;
importorg.apache.commons.pool2.impl.DefaultPooledObject;
importorg.apache.http.HttpHost;
importorg.elasticsearch.client.RestClient;
importorg.elasticsearch.client.RestHighLevelClient;
/**
*EliasticSearch连接池工厂对象
*@author00000
*
*/
publicclassEsClientPoolFactoryimplementsPooledObjectFactory{
@Override
publicvoidactivateObject(PooledObjectarg0)throwsException{
System.out.println("activateObject");
}
/**
*销毁对象
*/
@Override
publicvoiddestroyObject(PooledObjectpooledObject)throwsException{
RestHighLevelClienthighLevelClient=pooledObject.getObject();
highLevelClient.close();
}
/**
*生产对象
*/
// @SuppressWarnings({"resource"})
@Override
publicPooledObjectmakeObject()throwsException{
// Settingssettings=Settings.builder().put("cluster.name","elasticsearch").build();
RestHighLevelClientclient=null;
try{
/*client=newPreBuiltTransportClient(settings)
.addTransportAddress(newTransportAddress(InetAddress.getByName("localhost"),9300));*/
client=newRestHighLevelClient(RestClient.builder(
newHttpHost("192.168.1.121",9200,"http"),newHttpHost("192.168.1.122",9200,"http"),
newHttpHost("192.168.1.123",9200,"http"),newHttpHost("192.168.1.125",9200,"http"),
newHttpHost("192.168.1.126",9200,"http"),newHttpHost("192.168.1.127",9200,"http")));
}catch(Exceptione){
e.printStackTrace();
}
returnnewDefaultPooledObject(client);
}
@Override
publicvoidpassivateObject(PooledObjectarg0)throwsException{
System.out.println("passivateObject");
}
@Override
publicbooleanvalidateObject(PooledObjectarg0){
returntrue;
}
}
2.然后再写我们的连接池工具类
packagecom.aly.util;
importorg.apache.commons.pool2.impl.GenericObjectPool;
importorg.apache.commons.pool2.impl.GenericObjectPoolConfig;
importorg.elasticsearch.client.RestHighLevelClient;
/**
*ElasticSearch连接池工具类
*
*@author00000
*
*/
publicclassElasticSearchPoolUtil{
//对象池配置类,不写也可以,采用默认配置
privatestaticGenericObjectPoolConfigpoolConfig=newGenericObjectPoolConfig();
//采用默认配置maxTotal是8,池中有8个client
static{
poolConfig.setMaxTotal(8);
}
//要池化的对象的工厂类,这个是我们要实现的类
privatestaticEsClientPoolFactoryesClientPoolFactory=newEsClientPoolFactory();
//利用对象工厂类和配置类生成对象池
privatestaticGenericObjectPoolclientPool=newGenericObjectPool<>(esClientPoolFactory,
poolConfig);
/**
*获得对象
*
*@return
*@throwsException
*/
publicstaticRestHighLevelClientgetClient()throwsException{
//从池中取一个对象
RestHighLevelClientclient=clientPool.borrowObject();
returnclient;
}
/**
*归还对象
*
*@paramclient
*/
publicstaticvoidreturnClient(RestHighLevelClientclient){
//使用完毕之后,归还对象
clientPool.returnObject(client);
}
}
以上这篇java连接ElasticSearch集群操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。