通过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);
	}
}

通过SolrJ 4.9管理Solr core

时间: 2024-10-08 05:51:24

通过SolrJ 4.9管理Solr core的相关文章

通过Http管理Solr Core,实现索引的分类

查看所有core的状态 使用样例 http://172.168.63.233:8983/solr/admin/cores?action=STATUS 查看某一个core的状态 http://172.168.63.233:8983/solr/admin/cores?action=STATUS&core=collection3 创建core 需要提供coreName.实例路径.Config配置.schema文件及数据目录 , 其中instanceDir必须要. config, schema &

JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误

问题一:出现控制台坏的响应错误一Bad request 控制台出现错误如下: Bad Request request: http://hostIP:8983/solr/update?wt=javabin&version=1 解决方法: 出现以上错误的原因是,solr服务器上配置的Field和javabean提交的Field不能对应, 导致solr服务器找不到域,拒绝访问. 打开SOLR_HOME下的conf文件夹找到schema.xml文件,在其中添加对应的域. 例如以下代码添加了:title,

zookeeper管理solr的配置文件

zookeeper可以管理solr和其他软件的配置文件.配置文件还是保存在linux服务器的磁盘上,但是不是改变solr读取solr/home配置的配置文件的位置. 现在solr/home配置文件的位置有两个地方: E:\apache-tomcat-7.0.23\conf\Catalina\localhost\solr.xml solr的war包中的web.xml配置文件 可以考虑使用system.getproperty("")添加到solr源码中获取solrhome配置文件的代码段.

VS Code 管理 .NET Core解决方案

本练习要使用Visual studio code完成一个包含多个项目的解决方案,包括类库和Web项目.结合Visual Studio Code和.NET Core CLI,创建项目结构如下: piedpiper └── src ├── piedpiper.domain ├── piedpiper.sln ├── piedpiper.tests └── piedpiper.website 任务1:创建解决方案 首先,我们将创建我们的解决方案(.sln)文件,我一直都喜欢在顶级源文件夹中创建解决方案

JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再对索引进行搜索的过程叫全文检索 4. 索引是什么? 非结构数据中提取一个数据.并重新组合的过程叫索引 5. Lucene实现 6. 入门程序 磁盘文件为原始文件 创建索引 第一步:获取文件 第二步:创建文档对象 第三步:创建分析器 第四步:保存索引及文档到索引库 搜索索引 第一步:用户接口(百度)

Apache Solr 之 使用SolrJ操作索引库

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互.最基本的功能就是管理Solr索引,包括添加.更新.删除和查询等.对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能.如果你的应用比较复杂,可以扩展Solrj来满足需要. 使用 SolrJ操作索引库: package com.hcm.solr.test; import java.io.IOExce

Solr JAVA客户端SolrJ 4.9使用示例教程

摘要 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询solr索引的JAVA接口.SolrJ针对Solr提供了Rest 的HTTP接口进行了封装,SolrJ底层是通过使用httpClient中的方法来完成Solr的操作. SolrJ Solr POJOs 客户端 目录[-] 简介 SolrJ/Solr 跨版本兼容性 示例代码 参考 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对Solr提供了Rest

Solr 5.3.0集成mmseg4j、tomcat部署、Solrj 5.3.0使用

环境:Jdk 1.7    Solr 5.3.0    Tomcat 7    mmseg4j-solr-2.3.0 1.Solr环境搭建 1.解压solr 5.3.0 2.新建solr_home,将解压文件中的 server/solr 文件夹的复制到solr_home 3.配置solr_home.在solr_home/solr中新建应用 mysolr 4.将solr_home/solr/configsets/sample_techproducts_configs中的conf文件夹复制到myso

org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误

Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "error": { "trace": "java.lang.RuntimeException\r\n\tat org.apache.solr.search.ExtendedDismaxQParser$ExtendedDismaxConfiguration.<init>