上一篇我们已经安装好了单机版的 Solr7.容器并不是 Tomcat。而是 jetty。
接下来,我们开始测试并且整合 spring:
还是查看官方文档:
往下拉。
看到了吧!这就是我们获得连接的官方方法。
我们现在创建一个 maven 项目。pom 文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test.solr</groupId>
<artifactId>test.solr</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test.solr</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.2.1</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
这里我们用的是 java8进行编译。
我们接下来复制官方并加入项目代码如下:
import java.io.IOException;
import java.util.UUID;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
//import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;
public class App {
public static void main(String[] args) throws SolrServerException, IOException {
final SolrClient client = getSolrClient();
final SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", UUID.randomUUID().toString());
doc.addField("name", "Hello World!");
// final UpdateResponse updateResponse = client.add("core1", doc);
client.add("core", doc);
client.commit("core");
}
public static SolrClient getSolrClient() {
final String solrUrl = "http://192.168.33.11:8983/solr";
return new HttpSolrClient.Builder(solrUrl).withConnectionTimeout(10000).withSocketTimeout(60000).build();
}
}
注意。getSolrClient 方法返回的是SolrClient类。我们查看他们的关系:
懂了吧。CloudSolrClient 和 HttpSolrClient 都继承了这个抽象类。所以我们可以直接返回这个抽象类。
运行后浏览器访问:
此前,我们在 url 中并没有加入 core 的路径。所以我们在提交的时候必须指定 core
client.add("core", doc);
client.commit("core");
如果没有url 和 core 不对。会出现如下错误:
那么你需要检查路径和 core 书写的对不对了。
测试通过。
那么我们接下来开始 spring 和 solr 的整合:
我们看 看HttpSolrClient的源码可知,虽然他的构造方法是受保护的,而且传入的是一个 builder 对象。但是我们依旧可以用spring 的构造注入实例化。
spring 配置如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 单机版solr的连接 -->
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrClient">
<constructor-arg name="builder" value="http://120.78.192.229:8983/solr/core"/>
</bean>
</beans>
代码如下:
package test.solr.test.solr;
import java.io.IOException;
import java.util.UUID;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrInputDocument;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* <p>
* Title: Main
* </p>
* <p>
* Description:
* </p>
* <p>
* Company:
* </p>
*
* @author YuHong
* @date 2018年4月9日
* @version 1.0
*/
public class Main {
public static void main(String[] args) throws SolrServerException, IOException {
final SolrClient client = getSolrClient();
final SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", UUID.randomUUID().toString());
doc.addField("name", "My Mac!");
// final UpdateResponse updateResponse = client.add("core1", doc);
client.add(doc);
client.commit();
client.close();
}
public static SolrClient getSolrClient() {
// final String solrUrl = "http://192.168.33.137:8984/solr";
// return new
// HttpSolrClient.Builder(solrUrl).withConnectionTimeout(10000).withSocketTimeout(60000).build();
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"classpath:spring/applicationContext-dao.xml");
//单机版
SolrClient solrClient = (SolrClient) applicationContext.getBean("httpSolrServer");
return solrClient;
//集群版
// SolrClient solrClient = (SolrClient) applicationContext.getBean("cloudSolrServer");
// return solrClient;
}
}
运行后浏览器访问,结果如下:
很好!最新单机版 solr7.2.1 和spring5.0.2的整合已经成功。
由于博客长度有限。我将在下一篇详细介绍 solr7.2.1集群版和 spring5.0.2的完整整合过程
下一篇:https://blog.csdn.net/qq_32791293/article/details/79884001