Solr7.2.1整合 spring5.0.2 以及集群版和单机版 spring 配置 第二篇

上一篇我们已经安装好了单机版的 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值