Linux环境下solr集群的搭建不再赘述,有兴趣随便都能搜到
测试环境
- 单机版 baseSolrUrl=”http://192.168.25.120:8080/solr/coremain”
- 集群版
zkHosts=”192.168.25.120:2181,192.168.25.120:2182,192.168.25.120:2183”
- maven环境
<dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.17.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.17.RELEASE</version>
</dependency>
</dependencies>
package test;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
public class SolrClient {
@Test
public void addClient() throws Exception {
HttpSolrClient solrClient = new HttpSolrClient.Builder("http://192.168.25.120:8080/solr/coremain").build();
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "client");
document.addField("item_title", "这是一个client测试");
solrClient.add(document);
solrClient.commit();
solrClient.close();
}
//query结果
{
"id":"client",
"item_title":"这是一个client测试",
"_version_":1610280139105501184},
{
@Test
public void addCloud() throws Exception {
List<String> zkHosts = new ArrayList<String>();
zkHosts.add("192.168.25.120:2181");
zkHosts.add("192.168.25.120:2182");
zkHosts.add("192.168.25.120:2183");
Optional<String> zkChroot = Optional.of("/");
//builder的构造函数需要一个List和一个Optional
Builder builder = new CloudSolrClient.Builder(zkHosts, zkChroot);
CloudSolrClient solrClient = builder.build();
solrClient.setDefaultCollection("collection");
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "cloud");
document.addField("item_title", "这是一个cloud测试");
solrClient.add(document);
solrClient.commit();
solrClient.close();
}
//query结果
{
"id":"cloud",
"item_title":"这是一个cloud测试",
"_version_":1610280467722928128},
{
}
solrj7.4.0 & Spring XML配置 单机版
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd ">
<bean id="builder"
class="org.apache.solr.client.solrj.impl.HttpSolrClient.Builder">
<constructor-arg name="baseSolrUrl"
value="http://192.168.25.120:8080/solr/coremain" />
</bean>
<bean factory-bean="builder" factory-method="build" id="httpSolrClient">
</bean>
</beans>
@Test
public void addClient() throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
HttpSolrClient solrClient = context.getBean(HttpSolrClient .class);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "client-spring");
document.addField("item_title", "这是一个client-spring测试");
solrClient.add(document);
solrClient.commit();
solrClient.close();
}
//query结果
{
"id":"client-spring",
"item_title":"这是一个client-spring测试",
"_version_":1610282780262924288},
{
solrj7.4.0 & Spring XML配置 集群版
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd ">
<bean id="empty_builder"
class="org.apache.solr.client.solrj.impl.CloudSolrClient.Builder" />
//代码提示这个方法已经过时,但是没有测试出用构造方法怎么搭建,一直报错
<bean id="builder" factory-bean="empty_builder"
factory-method="withZkHost">
<constructor-arg
value="192.168.25.120:2181,192.168.25.120:2182,192.168.25.120:2183"
type="java.lang.String" />
</bean>
<bean id="cloudSolrClient" factory-bean="builder"
factory-method="build">
<property name="defaultCollection" value="collection"></property>
</bean>
</beans>
@Test
public void addCloud() throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
CloudSolrClient solrClient = context.getBean(CloudSolrClient.class);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "cloud-spring");
document.addField("item_title", "这是一个cloud-spring测试");
solrClient.add(document);
solrClient.commit();
solrClient.close();
}
//query结果
{
"id":"cloud-spring",
"item_title":"这是一个cloud-spring测试",
"_version_":1610299226983497728},
{