springboot框架,使用solr客户端solrj。
步骤1:application.yml中写入solr连接host
data: solr: host: http://localhost:8080/solr/collection1
步骤2:pom文件引入如下配置
<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>5.3.1</version> </dependency>
步骤3:新建solr配置类
@Configuration public class SolrCacheConfiguration { Logger logger = LoggerFactory.getLogger(RedisCacheConfigurartion.class); @Value("${spring.data.solr.host}") private String host; @Bean public String getSolrUrl(){ logger.info("solr地址:" + host); return host; } }
步骤4:新建solr连接工具类,使用单例模式(静态内部类)
@Component public class SolrUtil implements ApplicationContextAware { private static String URL = ""; private static ApplicationContext applicationContext = null; private volatile static HttpSolrClient server = new HttpSolrClient(URL); private static class SingletonHolder { private static final SolrUtil INSTANCE = new SolrUtil(); } static{ server.setSoTimeout(100000); server.setConnectionTimeout(100000); server.setDefaultMaxConnectionsPerHost(100); server.setMaxTotalConnections(100); server.setFollowRedirects(false); server.setAllowCompression(true); server.setMaxRetries(1); } public static SolrUtil getInstance() { return SingletonHolder.INSTANCE; } private SolrUtil(){ } /** * 获取solr连接 * @return */ public HttpSolrClient getServer(){ if("".equals(URL)){ SolrCacheConfiguration cacheConfiguration = applicationContext.getBean(SolrCacheConfiguration.class); URL = cacheConfiguration.getSolrUrl(); } server.setBaseURL(URL); return server; } /** * Bean初始化调用setApplicationContext方法 * @param applicationContext * @throws BeansException */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SingletonHolder.INSTANCE.applicationContext == null){ SingletonHolder.INSTANCE.applicationContext = applicationContext; } } /** * 关闭连接 * @param solrClient */ public void close(HttpSolrClient solrClient){ if(solrClient != null){ try { solrClient.close(); } catch (IOException e) { e.printStackTrace(); } } } }到这里,就可以用solrj操作solr了。