Commit 9bff3dfc by 李传峰

处理solr升级

parent 7589af66
......@@ -14,10 +14,9 @@
<version>${reversion}</version>
<name>pcloud-solr</name>
<url>http://maven.apache.org</url>
<properties>
<spring.data.solr.version>2.1.7.RELEASE</spring.data.solr.version>
</properties>
<dependencies>
......@@ -25,7 +24,6 @@
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>${spring.data.solr.version}</version>
</dependency>
<!-- Spring Cloud Begin -->
......@@ -33,11 +31,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- Spring Cloud End -->
<!-- Common Dependency Begin -->
<dependency>
......@@ -58,6 +51,11 @@
</dependency>
<!-- Common Dependency End -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
</dependency>
</dependencies>
</project>
package com.pcloud.solr;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.MapUtils;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.commons.lang3.StringUtils;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Description solr全文检索工具类
* @author PENG
* @date 2018/4/23
*/
@Component("solrUtils")
@PropertySource(value = "classpath:public_system.properties")
@NacosPropertySource(dataId = "solr7.properties")
public class SolrUtils {
private static Logger LOGGER = LoggerFactory.getLogger(SolrUtils.class);
......@@ -38,6 +36,7 @@ public class SolrUtils {
private static final SimpleDateFormat UTC_FULL_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
private static String defaultCollection;
private static String hosts;
protected static CloudSolrClient solrClient;
......@@ -545,11 +544,36 @@ public class SolrUtils {
@Value("${solr.default.collection}")
public void setDefaultCollection(String defaultCollection) {
SolrUtils.defaultCollection = defaultCollection;
initSolrClient(SolrUtils.hosts, SolrUtils.defaultCollection);
}
@Autowired
public void setSolrClient(SolrClient solrClient) {
SolrUtils.solrClient = (CloudSolrClient) solrClient;
SolrUtils.solrClient.setDefaultCollection(defaultCollection);
@Value("${solr.cloud.host}")
public void setSolrCloudHost(String hosts) {
SolrUtils.hosts = hosts;
initSolrClient(SolrUtils.hosts, SolrUtils.defaultCollection);
}
private void initSolrClient(String hosts, String defaultCollection) {
if (StringUtils.isBlank(hosts) || StringUtils.isBlank(defaultCollection)) {
return;
}
if (SolrUtils.solrClient != null) {
return;
}
try {
List<String> hs = Lists.newArrayList(StringUtils.split(hosts, ','));
CloudSolrClient client = new CloudSolrClient.Builder(hs).build();
client.setDefaultCollection(defaultCollection);
LOGGER.warn("SolrClient==>hosts:{}\tdefaultCollection={}\t{}", hosts, defaultCollection, client);
LOGGER.warn("SolrClient Ping==>{}", client.ping(defaultCollection));
SolrUtils.solrClient = client;
SolrUtils.defaultCollection = defaultCollection;
} catch (SolrServerException | IOException e) {
LOGGER.error("SolrClient initialized failed,{}", e.getMessage(), e);
throw new RuntimeException("SolrClient initialized failed");
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment