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(PooledObject arg0)throwsException{ System.out.println("activateObject"); } /** *销毁对象 */ @Override publicvoiddestroyObject(PooledObject pooledObject)throwsException{ RestHighLevelClienthighLevelClient=pooledObject.getObject(); highLevelClient.close(); } /** *生产对象 */ // @SuppressWarnings({"resource"}) @Override publicPooledObject makeObject()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(PooledObject arg0)throwsException{ System.out.println("passivateObject"); } @Override publicbooleanvalidateObject(PooledObject arg0){ 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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。