Solr学习02:搭建Solr环境

一、安装虚拟机

  Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。可以通过下面的地址下载所需JDK 或JRE :
  OpenJDK ( http://java.sun.com/j2se/downloads.html
  Sun (http://java.sun.com/j2se/downloads.html
  IBM (http://www.ibm.com/developerworks/java/jdk/
  Oracle (http://www.oracle.com/technology/products/jrockit/index.html
  JDK的安装步骤请参考相应的帮助文档。

二、下载Solr

  在下载solr之前,需要先确定solr的版本, 目前最新版本是 4.10.1,但是在 4.8 以后需要编译在1.7的版本。所以如果是JDK1.6环境,建议使用4.8之前的版本(例如4.7.2)。

  官网地址是:http://lucene.apache.org/solr/

  归档目录是:http://archive.apache.org/dist/lucene/solr/

  如果我们要下载最新的solr版本,那么操作如下:

  1.打开apache官网http://www.apache.org/

  2.在首页左下侧Projects区域找到并进入Lucene项目; (地址是:http://lucene.apache.org/)

  3.点击右上侧黄色大按钮,下载solr:

  4.打开的页面提供一些下载源,我们使用官方推荐的地址下载:

  5.下载solr包;

  如果是windows环境可以直接下载zip格式包;如果是在linux环境,下载tgz格式包。

  复制地址下载:

[[email protected]~]# wget http://apache.fayea.com/apache-mirror/lucene/java/4.10.1/lucene-4.10.1.tgz

   解压:

[[email protected]~]# tar -xvzf lucene-4.10.1.tgz

  

  如果我们需要下载历史版本(例如下载4.7版本),那么需要到归档目录下载。

  1.打开solr归档目录地址http://archive.apache.org/dist/lucene/solr/

  2.找到4.7.2版本的链接,点击进入。

  3.下载需要的solr包:

三、Solr下载包重要目录及文件说明

(Solr下载包重要目录及文件说明,来源于README.txt文件)

contrib:solr功能模块需要的库,根据需要引用
dist:发布目录
dist/solr-4.5.0.war:Solr web服务器,部署到tomcat或其他servlet容器中。
dist/solr--XX.jar:solr结合其他组件的中间包,至少需要包含核心包solr-core-XX.jar
  (http://wiki.apache.org/solr/SolrPlugins)
docs:Solr 文档及教程目录
  (入口访问docs/index.html)
example:官方提供的Solr使用例子。
example-DIH(Data Import Handler),演示了如何从hsql数据库导入数据到solr中;
example-schemaless,演示了无schema实例;
multicore,演示了如何使用多个core,可以理解每个core对应一个数据库实体表,如检索公司信息和产品信息,公司core和产品core分别使用自己的配置。当然也可以是不同数据库中的表,供不同的项目使用。
solr,演示了单core(这里指collection1)的使用,我们一般使用时会在这个基础上定制;
solr/collection1/conf目录下主要是两个配置文件:
schema.xml 用于定义索引库的字段、字段类型及分词器等(核心文件)
solrconfig.xml 定义了这个core的配置信息,如使用lucene的版本,log输出,缓存策略等。

三、通过start.jar启动solr

  主要用于在本机或测试服务器上搭建一个用于测试的solr。

  安装:直接将下载的solr解压到任意目录,例如: D:\solr-4.7.2

  启动:如果是window环境,双击D:\solr-4.7.2\example下的start.jar可以启动。但是这种方式solr是在后台执行的 (不会弹出界面,只是在任务管理器可以看到多了一个进程) ,这种方式并不方便调试,无法判断启动中是否有错误。 推荐在命令行中启动,输出的LOG对查错很有帮助。

D:\solr-4.7.2\example>java -jar start.jar

  启动后 D:\solr-4.7.2\example\webapps下的solr.war 会解到D:\solr-4.7.2\example\solr-webapp\webapp中。

  start.jar 使用的内置的Jetty服务器,他的入口是StartSolrJetty文件。 启动之后默认端口是8983,如果想使用其他端口可以再启动时候增加参数。

D:solr-4.7.2\example>java -Djetty.port=8080 -jar start.jar

  或直接修改jetty的配置文件,D:\solr-4.5.1\example\etc\jetty.xml,将其中8983改成希望的端口。

  如果启动时报异常:
  FAILED [email protected]:8983: java.net.BindException: Address already in use: JVM_Bind 就说明当前端口占用中。需要换一个端口。    

  org.apache.solr.common.SolrException: Index locked for write for core collection1 或 org.apache.lucene.store.LockObtainFailedException: Index locked for write for core collection1 有可能是索引库已经被一个solr占用了,不能两个端口同时启动同一个core。

  如果没有报错启动成功后就可以在浏览器中输入地址: http://localhost:8983/solr/ 就可以看到solr的服务主页了。

三、Tomcat上安装Solr

  假设是Linux服务器。

  1.打开tomcat目录下的conf/server.xml,设置tomcat编码,防止从solr中查询时,参数为中文因乱码而查不出结果;

[[email protected] ~]# vi /opt/tomcat/conf/server.xml

  在8080端口对应的Connector中加入URIEncoding="UTF-8",如下图(一定注意大小写):

  2.在tomcat中部署solr服务器

  这和在Tomcat中部署其他项目一样。 最简单的方法是直接将solr.war考到tomcat下,同时更名为solr.war

[[email protected] ~]# cp solr-4.7.2/dist/solr.war /opt/tomcat/webapps/solr.war

  如果对Tomcat比较熟悉,也可以将solr.war解压到任意目录,然后通过Tomcat Context配置的方式进行部署。

  简单介绍一下,通过Context配置有两种常用方式。 一种是在tomcat/conf/server.xml,在<host></host>之间加入代码:

<Context path="solr" docBase="tomcatApp/MySolrApp" debug="0" reloadable="true" crossContext="true"/> 

(path是应用的上下文跟,docBase是应用所在目录)
另一种是在tomcat/conf/Catalina/localhost目录增加一个XML文件,比如是MyProject,内容为:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
 <Context crossContext="true" docBase="tomcatApp/MyProject" path="" reloadable="true">
</Context> 

(XML的文件名就是应用的上下文跟)

  3.整合索引库

  solr应用有两个solr文件,一个是example/webapps/solr.war,这个文件是Solr的应用服务。(可以理解成就是一个JAVA-WEB应用),另外一个是solr-4.7.2/example/solr,这个是solr-core 目录(索引库目录),这个目录用来放置索引库。

   每个索引库都包含一个config目录,这个目录是索库的配置。

  Solr服务默认会到JAVA运行上下文目录(tomcat/bin)中查找这个索引仓库目录。

  我们可以将solr-4.7.2\example下的solr拷贝至tomcat的bin目录下(tomcat/bin/solr)。这样当Solr服务启动的时候就会自动加载相关的配置。 但是这种方法并不推荐,因为solr建立的索引文件也会放到索引库中(索引库data目录)索引库中会包含了索引文件,索引文件占用的空间会越来越多,所以建议将solr索引库单独存放。

  这个目录可以通过该Solr服务的web.xml进行配置,打开web.xml

[[email protected] ~]# vi /opt/tomcat/webapps/solr/WEB-INF/web.xml

  可以看到其中有这样一段配置

<!--
 <env-entry>
  <env-entry-name>solr/home</env-entry-name>
  <env-entry-value>/put/your/solr/home/here</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
 </env-entry>
-->

  将env-entry节点的注释去掉,修改env-entry-value值

<env-entry>
 <env-entry-name>solr/home</env-entry-name>
 <env-entry-value>/opt/my_solr_core</env-entry-value>
 <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

  /opt/my_solr_core是solr-core的目录 (记得将solr-core文件家的内容拷贝到my_solr_core)

  4.为Solr服务添加必要的jar包

   solr的war包中不包含任何日志的jar包,所以需要自己手动添加; 打开solr.war\WEB-INF\lib目录,添加以下jar包

  jcl-over-slf4j-1.6.6.jar
  jul-to-slf4j-1.6.6.jar 
  log4j-1.2.16.jar
  slf4j-api-1.6.6.jar 
  lf4j-log4j12-1.6.6.jar

  (这些是日志包,在solr-4.10.1\example\lib\ext目录下)

[[email protected] ~]# cp  solr-4.7.2/example/lib/ext/* /opt/tomcat/webapps/solr/WEB-INF/lib/

  log4j需要一个log4j.properties配置文件,在solr-4.7.2/example/resources/目录有一个演示用的log4j.properties配置文件中。
  我们可以将这个配置文件拷贝到应用中,后续再根据需要修改;

[[email protected] ~]# mkdir /opt/tomcat/webapps/solr/WEB-INF/classes/
[[email protected] ~]# cp solr-4.7.2/example/resources/log4j.properties /opt/tomcat/webapps/solr/WEB-INF/classes/

  需要注意的是log4j.properties配置文件有一段配置:

log4j.appender.file.File=${solr.log}/solr.log

  solr.log为tomcat启动时指定的变量,如果没指定,日志文件可能会写到其他目录下。建议改成绝对路径,这样更方便一些。

  如果不想输出文件日志,那么可以将 log4j.rootLogger=INFO, file, CONSOLE 改为 log4j.rootLogger=INFO, CONSOLE

  (对于log4j相关的配置,可以查阅log4j相关文档,这里不做具体的介绍)

  如果需要DIH服务,还需要添加DIH相关的包和jdbc相关包。
  solr-dataimporthandler-4.10.1.jar 
  solr-dataimporthandler-extras-4.10.1.jar  
  (这两个包在 solr-4.10.1\dist目录)  
  mysql-connector-java-5.1.22.jar    
   (mysql数据库的驱动包,如果是其他数据库,需要添加对应的jdbc 包)

  重启tomcat,访问地址http://你的服务器ip或域名/solr/ 如果可以看到如下界面,证明配置成功了!

注:部署之后需要确认索引库中的路径路径配置属否正确。 solr-4.7.2/example/solr/collection1/conf/solrconfig.xml

  这些路径需要修改,否则可能报找不到某些类的异常,如: Can’t find (or read) directory to add to classloader 或者 java.lang.ClassNotFoundException: solr.clustering.ClusteringComponent

  这个路径如果是相对路径,那么是相对于索引库的路径 (collection1的路径)

  

四、Solr web服务器管理界面说明

Solr web应用自带了管理界面,可以方便的查看系统状态,solr设置,分词检验,索引查询,增减核心(core)。

这里列举一些常用的比较重要的内容。

Dashboard(仪表盘) 访问主页,http://你的域名或ip/solr/,默认显示此页内容,包含solr版本,包含系统内存和jvm内存的使用情况,jvm参数等

Logging(日志) 可以用来查看solr运行是否有警告或者异常,以便及时处理

Core Admin(索引库管理) 这个界面很重要,这使多核的配置,索引库的优化等,变得非常简单; 主要功能包括:Add Core(添加核心,即索引库),Unload(卸载核心),Rename(重命名核心),Optimize(优化索引库)。

Java Properties(java属性) java及tomcat的一些属性

Core Selector(核心选择器,这里以collection1为例)

1.Overview(概览):包含基本统计如当前文档数;和实例信息如当前核心的配置目录;

2. Analysis(分析):检验分词效果,如图,分词后“开发”将被高亮(注意FieldType需要选定为与被分析内容类型一致,如这里的title配置了中文分词)

3.Config(配置):当前核心的配置,即solrconfig.xml的内容

4.Query(查询):这是一个查询界面,用的比较多,用来查询索引的文档,包含是否存在,排序是否正确等。 5.Schema(当前索引库定义),即即schema.xml的内容

五、安全问题

  Solr管理后台功能十分强大,但是并没有集成安全认证机制,如果在生产环境,管理后台地址可以公开访问的话,不但core的结构会暴漏出来,索引库甚至可以被修改或删除。 因为此界面涉及到位solr增减核心等管理操作,在实际产品上运行时,尽量设置禁用在公网上(通过ip或者域名)的访问,需要使用时再临时打开。

时间: 2024-11-09 02:22:30

Solr学习02:搭建Solr环境的相关文章

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

EXTJS学习笔记--搭建实验环境

1.目的 在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.学习过程中遇到的问题 ext-4.2.1-gpl与ext-4.2.1-commercial的区别        ext-4.2.1-gpl:开源版本,使用GPL开源协议        ext-4.2.1-commercial:商业版本,收费,稳定 作为个人研究来讲,可以使用ext-4.2.1-gpl. 下载的Extjs目录中各个文件说明        主要目录说明 builds目录:压

Solr学习之二-Solr基础知识

一 基本说明 简单来说Solr是基于Lucene的高性能的,开源的Java企业搜索服务器.Solr可以看作一个Web app,运行在tomcat或Jetty这类HTTP服务器上, 底层是一个基于Lucene的搜索引擎,还附加一个Solr的基本管理界面.Solr提供HTTP服务,通过Get方法进行查询,通过Post方法进行索引的添加/删除管理. 一般来说Solr的查询时通过Get方法请求到HTTP服务器的solr这个app下的/select对应的servlet上去,而添加等操作时通过POST方法到

ESP8266-12F学习之搭建开发环境

 讲在开头      最近做了一个联网的产品,用到了ESP8266和蓝牙CC2541,算是往目前市场跑火的智能家居领域凑了下热闹,关于智能家居领域,其实很早就提出了,只是由于当时国内的技术并不成熟,所以一直都达不到一个能支撑其爆发的点,随着最近几年的发展,各种协议趋于成熟,联网的模块也越来越多,使得智能家居领域开始爆发,而这之中,又以WIFI,蓝牙和zigbee三大技术在目前的市场应用的比较广泛. 一.ESP8266-12F      近一两年是物联网快速发展的时期,乐鑫的功劳不小,其研发的ES

solr学习笔记一------solr的安装

自己整理了一天,终于将solr配置成功,我使用的是Tomcat7+solr4.7.2. 第一步,配置好tomcat,保证tomcat可以正常运行,将下载好的solr解压. solr解压目录: 第二步,将dist中的 solr-4.7.2.war 文件复制到tomcat安装目录中的webapps下. 第三步,在E盘新建文件夹solr,将solr解压目录下的\example\solr的所有文件复制到新建的solr文件夹中. 第四步,在tomcat安装目录中的\conf\Catalina\localh

基于OpenGL编写一个简易的2D渲染框架02——搭建OpenGL环境

由于没有使用GLFW库,接下来得费一番功夫. 阅读这篇文章前请看一下这个网页:https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/ 以下,我摘取了一点片段 Windows上的OpenGL库 如果你是Windows平台,opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了.由于这篇教程用的是VS编译器,并且是在Windo

android学习一---搭建开发环境

android基于Java并运行Linux内核上的轻量级操作系统.由于是基于java的,学习起来也不是太难,对java有一定了解并知道一些基本的图形用户界面,入门就很简单了. 一.了解JDK ,SDK,ADT,ADT Bundle,Android Studio 随着android的发展,现在搭建一个android开发环境变的越来越简单了. JDk:(Java Development Kit) 是 Java 语言的软件开发工具包(SDK),要编译JAVA程序,必须安装SDK. JRE:(Java

Solr学习笔记-认识solr及安装配置

Solr(http://lucene.apache.org/solr),Apache Lucene项目的子项目,是一个基于Lucene的Java搜索引擎服务器. Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语,更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容,通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引. Solr支持从关系数据库和XML文档中提取原始数据

Solr学习01:Solr基础知识

一.什么是solr 首先,要了解下Solr是什么,以下是官方的描述. Solr是一个来自Apache Lucence项目,是一个热门开源的企业级搜索平台.为目前世界上相当多的大型互联网站点提供搜索和导航服务. [http://wiki.apache.org/solr/] Solr使用Java语言写的,作为一个独立的全文检索服务器项目,可运行在如Jetty或Tomcat等servlet容器中.(Solr提供了层面搜索(就是统计).命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等