通过SolrJ 4.9管理Solr core

简介:

应用场景

    使用solr时,有时需要通过程序动态的加载配置文件,如修改了solrconfig.xml、schema.xml,需要通过重新加载core来达到重新加载配置文件的目的。

    另外,针对索引分类,也需要动态的创建core.

代码示例

import java.io.File;
import java.io.IOException;

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.util.FileUtils;

public class CoreAdminRequestDemo {
	public static final String SOLR_URL = "http://172.168.63.233:8983/solr";
	public static final String DEFAULT_CORE_NAME = "collection1";
	public static final String NEW_CORE_NAME = "demo";

	public static void main(String[] args) {
		try {
			// createCore(NEW_CORE_NAME);
			reloadCore(DEFAULT_CORE_NAME);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SolrServerException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 
	 * @param coreName
	 * @throws SolrServerException
	 * @throws IOException
	 */
	public static void reloadCore(String coreName) throws SolrServerException,
			IOException {
		// 连接solr服务器
		HttpSolrServer server = new HttpSolrServer(SOLR_URL);
		CoreAdminRequest.reloadCore(coreName, server);
		System.out.println("重新加载" + coreName + "成功");
	}

	/**
	 * 
	 * @param coreName
	 * @throws SolrServerException
	 * @throws IOException
	 */
	public static void createCore(String coreName) throws SolrServerException,
			IOException {
		// 连接solr服务器
		HttpSolrServer server = new HttpSolrServer(SOLR_URL);

		// 获得solr.xml配置好的cores作为默认,获得默认core的路径
		NamedList<Object> list = CoreAdminRequest
				.getStatus(DEFAULT_CORE_NAME, server).getCoreStatus()
				.get(DEFAULT_CORE_NAME);
		String path = (String) list.get("instanceDir");

		// 获得solrhome,也就是solr放置索引的主目录
		String solrHome = path.substring(0, path.indexOf(DEFAULT_CORE_NAME));

		// 建立新core所在文件夹
		File corePath = new File(solrHome + File.separator + NEW_CORE_NAME);
		if (!corePath.exists()) {
			corePath.mkdir();
		}
		// 建立新core下的conf文件夹
		File confPath = new File(corePath.getAbsolutePath() + File.separator
				+ "conf/");
		if (!confPath.exists()) {
			confPath.mkdir();
		}
		// 将默认core下conf里的solrconfig.xml和schema.xml拷贝到新core的conf下。这步是必须的
		// 因为新建的core solr会去其conf文件夹下找这两个文件,如果没有就会报错,新core则不会创建成功
		FileUtils
				.copyFile(new File(path + "conf/solrconfig.xml"), new File(
						confPath.getAbsolutePath() + File.separator
								+ "solrconfig.xml"));
		FileUtils.copyFile(new File(path + "conf/schema.xml"), new File(
				confPath.getAbsolutePath() + File.separator + "schema.xml"));

		// 创建新core,同时会把新core的信息添加到solr.xml里
		CoreAdminRequest.createCore(coreName, coreName, server);
	}
}


目录
相关文章
|
2月前
|
缓存 Java 网络安全
Solr7.4.0报错org.apache.solr.common.SolrException
在使用 Solr 7.4.0 时,`org.apache.solr.common.SolrException` 错误可能由多种原因引起,包括配置文件错误、核心未加载、权限问题、Java 环境问题、依赖库冲突和网络配置问题。通过检查配置文件、确保正确的权限、验证Java环境、解决依赖库冲突和检查网络配置,可以有效解决这些问题。结合日志文件、管理控制台和调试模式,可以快速定位和解决错误,确保 Solr 系统的稳定运行。
46 1
|
6月前
|
Java Apache Spring
整合Spring Boot和Apache Solr进行全文搜索
整合Spring Boot和Apache Solr进行全文搜索
jeeboot集成mongohttps报错‘org.springframework.data.mongodb.core.MongoTemplate‘ in your configuration.
jeeboot集成mongohttps报错‘org.springframework.data.mongodb.core.MongoTemplate‘ in your configuration.
|
Java 索引 存储
通过solrj对solr进行开发
应用场景 当安装部署完solr之后,我们可以通过solrj来连接solr,进行新建,删除索引等等操作,达到全文检索的效果。
1164 0
|
网络安全 Linux
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /eclipse20171118
1:如果有一天,你有幸看到了这个错误,也许你像我一样low,因为此时,你已经准备开发Zookeeper程序了,却还没有把Zookeeper的服务启动起来。 1 org.apache.zookeeper.
5105 0
|
Java Maven 索引
solr6.6初探之solrj
一. solrj简介:   solrj可以使Java应用程序很方便的访问与操作solr。solrj有几个核心类,分别为:1.SolrClient 2.SolrRequests 3.SolrQuerys 4.
1695 0
|
XML Java 数据格式
|
数据库
solr6.6初探之配置篇
一.solr的简介 1) solr是企业级应用的全文检索项目,它是基于Apache Lucence搜索引擎开发出来的用于搜索的应用工程 2) solr最新版本6.6 下载地址:下载地址   二 启动与配置solr 1) 下载并解压文件后会得到以下界面: 我们重点关注以下几个文件夹: 1.bin 放置solr的相关执行脚本,在solr5.0版本以前,部署过程相当麻烦,好在Apache帮我们简化了相关solr的配置 2.example :这个文件夹里放置的一些solr应用实例。
1266 0