一 、安装solr

环境说明:centos 7.3,solr 6.6,zookeeper3.4,Tomcat8.5,jdk1.8

zookeeper的部署请参考:http://www.cnblogs.com/Sunzz/p/8464284.html

1. 在/opt/下解压tomcat、solr

[root@solr_1 ~]# tar -xf apache-tomcat-8.5..tar.gz -C /opt/
[root@solr_1 ~]# tar -xf solr-6.6..tgz -C /opt/
[root@solr_1 ~]# cd /opt
[root@solr_1 opt]# ln -sv apache-tomcat-8.5. tomcat
[root@solr_1 opt]# ln -sv solr-6.6. solr

2. 将solr-6.6.0/server/solr-webapp/webapp复制到tomcat/webapps下,并改名为solr

[root@solr_1 ~]# cp -r /opt/solr/server/solr-webapp/webapp/ /opt/tomcat/webapps/
[root@solr_1 ~]# mv /opt/tomcat/webapps/webapp /opt/tomcat/webapps/solr

3. 复制所需jar包到tomcat中solr项目的lib下

① 将solr-6.6.0/server/lib/ext下的jar、

② 将solr-6.6.0/server/lib下以metrics开头的5个jar(metrics-core-3.2.2.jar、metrics-ganglia-3.2.2.jar、metrics-graphite-3.2.2.jar、metrics-jetty9-3.2.2.jar、metrics-jvm-3.2.2.jar)、

③ 将solr-6.6.0/dist/下的solr-dataimporthandler-6.6.0.jar和solr-dataimporthandler-extras-6.6.0.jar

拷贝到apache-tomcat-8.5.20/webapps/solr/WEB-INF/lib下

[root@solr_1 ~]# cp  /opt/solr/server/lib/ext/*.jar /opt/solr/server/lib/metrics*.jar  /opt/solr/dist/solr-dataimporthandler-*.jar   /opt/tomcat/webapps/solr/WEB-INF/lib/

4. 将solr-6.6.0/server/solr下的文件拷贝至新建的solr-home下

[root@solr_1 ~]# mkdir /opt/solr/solr-home
[root@solr_1 ~]# cp -r /opt/solr/server/solr/* /opt/solr/solr-home/

5. 修改apache-tomcat-8.5.20/webapps/solr/WEB-INF下的web.xml

① 找到<env-entry>,解开注释,并修改env-entry-value为solr-home的路径

命令:

[root@solr_1 ~]# vim /opt/tomcat/webapps/solr/WEB-INF/web.xml

修改后

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

② 去掉权限,不然访问solr会出现没有授权的错误,将两个security-constraint标签注释。

修改后:

<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
-->

6. 在/opt/tomcat/webapps/solr/WEB-INF/下创建classes文件夹

并将solr-6.6.0/server/resources/log4j.properties拷贝过去

命令:

[root@solr_1 ~]# cd /opt/tomcat/webapps/solr/WEB-INF/
[root@ WEB-INF]# mkdir classes
[root@ WEB-INF]# cp -rf /opt/solr/server/resources/log4j.properties ./classes/

7. 在solr-home目录下,新建collection1文件夹

并将 /solr-6.6.0/server/solr/configsets/basic_configs中conf文件夹复制到新建的collection1文件夹中.在collection1目录下新建data文件夹.

[root@solr_1 ~]# mkdir /opt/solr/solr-home/collection1
[root@solr_1 ~]# cp -r /opt/solr/server/solr/configsets/basic_configs/conf/ /opt/solr/solr-home/collection1/
[root@solr_1 ~]# mkdir /opt/solr/solr-home/collection1/data

collection1中创建文件core.properties,写入内容

[root@solr_1 ~]# vim  /opt/solr/solr-home/collection1/core.properties
name=collection1
config=solrconfig.xml
schema=managed-schema
dataDir=data

8. 修改solr的端口与tomcat相同

修改/usr/local/solr/solr-home/solr.xml中的

<int name="hostPort">${jetty.port:8080}</int>

9. 启动tomcat

在浏览器输入地址:http://192.168.29.110:8080/solr/index.html

二 、配置IKAnalyzer分词

1. 解压ikanalyzer-solr6.5.zip

[root@solr_1 ~]# unzip ikanalyzer-solr6..zip
[root@solr_1 ~]# mv ikanalyzer-solr6. /opt/

把ext.dic、IKAnalyzer.cfg.xml和stopword.dic复制到apache-tomcat-8.5.20\webapps\solr\WEB-INF\classes中,

[root@solr_1 ~]# mkdir /opt/tomcat/webapps/solr/WEB-INF/classes
[root@solr_1 ~]# cp /opt/ikanalyzer-solr6./ikanalyzer-solr5/ext.dic /opt/ikanalyzer-solr6./ikanalyzer-solr5/IKAnalyzer.cfg.xml /opt/ikanalyzer-solr6./ikanalyzer-solr5/stopword.dic /opt/tomcat/webapps/solr/WEB-INF/classes

把ik-analyzer-solr5-5.x.jar 和 solr-analyzer-ik-5.1.0.jar复制到apache-tomcat-8.5.20/webapps/solr/WEB-INF/lib中;

[root@solr_1 ~]# cp /opt/ikanalyzer-solr6./ikanalyzer-solr5/*.jar  /opt/tomcat/webapps/solr/WEB-INF/lib/

2. 打开solr-home/collection1/conf下的managed-schema文件

[root@solr_1 ~]# vim /opt/solr/solr-home/collection1/conf/managed-schema

在</schema>前加入配置:

 <!-- IK分词 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
</analyzer>
</fieldType>

3. 重启tomcat

进入http://192.168.29.110:8080/solr/index.html进行确认。

三 拼音配置

1.复制相关jar文件

将pinyinTokenFilter-1.1.0-RELEASE.jar和pinyinAnalyzer4.3.1.jar和pinyin4j-2.5.0.jar复制到apache-tomcat-8.5.20/webapps/solr/WEB-INF/lib目录下

[root@solr_1 ~]# cp  /opt/ikanalyzer-solr6./pinyin*  /opt/tomcat/webapps/solr/WEB-INF/lib/

2. 修改solr-home/collection1/conf下的managed-schema文件

(修改后)

<!-- IK分词 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
<filter class="top.pinyin.index.solr.PinyinTokenFilterFactory" pinyin="true" isFirstChar="true" minTermLenght="2" />
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="2" maxGram="20" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
</analyzer>
</fieldType>

(上方标红的为添加内容)

重启tomcat,测试

四、同义词

1. 修改managed-schema文件中的ik分词配置

<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
<filter class="top.pinyin.index.solr.PinyinTokenFilterFactory" pinyin="true" isFirstChar="true" minTermLenght="2"/>
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="2" maxGram="20"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

2. 在solr-home\collection1\conf\synonyms.txt中添加同义词

hell,二是

诛仙,诛仙2,梦幻诛仙

五、联想词

1. 添加联想类型

首先需要加上用以联想的字段,这里假设我们对name字段进行联想,配置如下(managed-schema文件):

<field name="name" type="text_ik" multiValued="false" indexed="true" stored="true"/>
<field name="suggestion" type="text_suggest" indexed="true" stored="true" multiValued="true" />
<copyField source="name" dest="suggestion"/>

suggestion字段即为suggest联想所取的字段。这里将suggestion字段设为text_suggest类型,text_suggest是一个自定义的类型,具体作用和配置后面再说。然后利用copyField将name字段拷贝到suggestion字段。那么为什么我们不直接对name字段进行联想,而是专门建立一个字段把name字段拷贝过去,乃至专门建立了一个字段类型呢?在配置中我们可以看到,name字段采用了IKAnalyzer进行了中文分词,如果我们直接对name字段进行分词,则联想出来的就会是分词之后的结果。例如期望联想的记录是“先吃水果然后吃雪糕”,最后联想出来的却是“先吃”。

2. 配置联想字段

接下来就需要建立一个专门的字段类型来配合suggest模块进行检察建议了。这里该字段名称为text_suggest,配置如下(managed-schema文件):

<fieldType name="text_suggest" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

在这里我们要对整个字段进行联想,因此采用KeywordTokenizerFactory作为分词器,并且使用LowerCaseFilterFactory来保证其可以不区分大小写。可以根据需要替换成自己需要的analyzer。

3. suggest模块配置

现在我们的记录表结构已经建立好了,下面我们进行suggest模块的配置。

首先我们来添加suggest模块。编辑solrconfig.xml文件,添加如下配置:

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggest</str>
<str name="lookupImpl">AnalyzingLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggestion</str>
<str name="suggestAnalyzerFieldType">text_suggest</str>
<str name="buildOnStartup">false</str>
</lst>
</searchComponent>

说明:在本配置中

  name为该suggest模块的名字;
  lookUpImpl为查找器,默认为JaspellLookupFactory;
  dictionaryImpl为字典实现;
  field为要联想的字段;
  suggestAnalyzerFieldType规定了进行联想操作所使用类型所对应的Analyzer(该字段必填);
  buildOnStartup表示是否在启动时建立索引。

具体配置信息详见https://cwiki.apache.org/confluence/display/solr/Suggester。

4. requestHandler配置

接下来我们需要配置suggest模块的requestHandler。编辑solrconfig.xml文件,添加如下配置:

<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.dictionary">suggest</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>

下面解释配置中涉及到的参数。suggest参数不用说了,必须为true;

suggest.dictionary为suggest操作所需要用到的字典,应当与上面suggest模块配置中的name属性保持一致;

suggest.count为候选词数量,这里为10。

具体配置可在solr官网中找到:https://lucene.apache.org/solr/guide/6_6/suggester.html

5. 建立索引

这里我们就已经把suggest模块配置完毕了。如果suggest模块配置中buildOnStartup设置为false,则需要手动建立一次索引。建立索引链接形如:

http://192.168.29.110:8080/solr/collection1/suggest?suggest=true&suggest.dictionary=suggest&wt=json&suggest.q=Ath&suggest.build=true

6. 测试

六、集成zookeeper

本实例采用zookeeper3.4.10

1. 把solrhome中的配置文件上传到zookeeper集群

使用:zookeeper的客户端上传。

[root@solr_1 ~]# cd /opt/solr/server/scripts/cloud-scripts/
[root@solr_1 cloud-scripts]# ./zkcli.sh -zkhost 192.168.29.110:,192.168.29.120:,192.168.29.130: -cmd upconfig -confdir /opt/solr/solr-home/core_shopdemo_product2/conf/ -confname myconf

查看配置文件是否上传成功:

[root@bogon bin]# bash /usr/local/zookeeper/zoo1/zookeeper-3.4.10/bin/zkCli.sh
Connecting to localhost:
[zk: localhost:(CONNECTED) ] ls /
[configs, zookeeper]
[zk: localhost:(CONNECTED) ] ls /configs
[myconf]
[zk: localhost:(CONNECTED) ] ls /configs/myconf
[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]

2. 修改每一台solr的tomcat 的 bin目录下catalina.sh文件

在其中加入DzkHost指定zookeeper服务器地址:

JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"

# Register custom URL handlers
# Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.29.110:2181,192.168.29.120:2181,192.168.29.130:2181"

(上方标红的为添加内容)

3. 重新启动tomcat

4. 使用collections管理功能

添加collection

 说明:

  config set:配置文件存放位置
  numShards:片区数量
  replicationFactor:每一个片区提供服务的机器数量(小于机器总数)
  Show advanced 显示高级设置
  maxShardsPerNode:最大片区数量

(5、6 非必须步骤)

5. 创建一个两片的collection,每片是一主一备。

在浏览器中访问:

http://192.168.29.110:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

连接中需要修改的内容:

ip:服务器ip

name:数据集名称

numShards:数据集有几个片区

replicationFactor:每一个片区提供服务的机器数量(小于机器总数)

6. 删除collection1.

http://192.168.29.110:8080/solr/admin/collections?action=DELETE&name=collection1

连接中需要修改的内容:

ip:服务器ip

name:数据集名称

七、Solr集群的使用

1. 使用solrj操作集群环境的索引库

在pom.xml增加solr的jar

<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.6.0</version>
</dependency>

代码:

package com.demo.util.solr;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;

//SolrCloud 索引增删查

public class SolrCloudTest {
private static CloudSolrClient cloudSolrClient;
private static synchronized CloudSolrClient getCloudSolrClient(final String zkHost) {
if (cloudSolrClient == null) {
try {
cloudSolrClient = new CloudSolrClient(zkHost);
} catch (Exception e) {
e.printStackTrace();
}
}
return cloudSolrClient;
}
private static void addIndex(SolrClient solrClient) {
try {
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField("id", "421245251215121452521251");
doc1.addField("name", "张三");
doc1.addField("age", 30);
doc1.addField("desc", "张三是个农民,勤劳致富,奔小康"); SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("id", "4224558524254245848524243");
doc2.addField("name", "李四");
doc2.addField("age", 45);
doc2.addField("desc", "李四是个企业家,白手起家,致富一方"); SolrInputDocument doc3 = new SolrInputDocument();
doc3.addField("id", "2224558524254245848524299");
doc3.addField("name", "王五");
doc3.addField("age", 60);
doc3.addField("desc", "王五好吃懒做,溜须拍马,跟着李四,也过着小康的日子"); Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(doc1);
docs.add(doc2);
docs.add(doc3);
solrClient.add(docs);
solrClient.commit();
} catch (SolrServerException e) {
System.out.println("Add docs Exception !!!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Unknowned Exception!!!!!");
e.printStackTrace();
}
} public static void search(SolrClient solrClient, String String) {
SolrQuery query = new SolrQuery();
query.setQuery(String);
try {
QueryResponse response = solrClient.query(query);
SolrDocumentList docs = response.getResults();
System.out.println("文档个数:" + docs.getNumFound());
System.out.println("查询时间:" + response.getQTime()); for (SolrDocument doc : docs) {
String id = (String) doc.getFieldValue("id");
String name = (String) doc.getFieldValue("name");
Integer age = (Integer) doc.getFieldValue("age");
String desc = (String) doc.getFieldValue("desc");
System.out.println("id: " + id);
System.out.println("name: " + name);
System.out.println("age: " + age);
System.out.println("desc: " + desc);
System.out.println();
}
} catch (SolrServerException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Unknowned Exception!!!!");
e.printStackTrace();
}
} public static void deleteAllIndex(SolrClient solrClient) {
try {
solrClient.deleteByQuery("*:*");// delete everything!
solrClient.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Unknowned Exception !!!!");
e.printStackTrace();
}
} public static void main(String[] args) throws IOException {
final String zkHost = "192.168.29.110:2181,192.168.29.120:2181,192.168.29.130:2181";
final String defaultCollection = "collection1";
final int zkClientTimeout = 20000;
final int zkConnectTimeout = 1000; CloudSolrClient cloudSolrClient = getCloudSolrClient(zkHost);
System.out.println("The Cloud cloudSolrClient Instance has benn created!");
cloudSolrClient.setDefaultCollection(defaultCollection);
cloudSolrClient.setZkClientTimeout(zkClientTimeout);
cloudSolrClient.setZkConnectTimeout(zkConnectTimeout);
cloudSolrClient.connect(); System.out.println("The cloud Server has been connected !!!!");

//创建索引

   SolrCloudTest.addIndex(cloudSolrClient);

//查询

  SolrCloudTest.search(cloudSolrClient, "name:李四");

//删除

    SolrCloudTest.deleteAllIndex(cloudSolrClient);
SolrCloudTest.search(cloudSolrClient, "name:李四");
cloudSolrClient.close();
}
}

2 在solr的管理页面增加collection1的索引字段“name”,“age”,“desc”。

name和desc的字段类型使用添加的IK分词“text_ik”,

age的字段类型使用int

八 对数据库数据进行索引

数据库主机以及账号密码:

    mysql: 192.168.29.100:
    user:root
    password:

1.复制相关jar文件

将solr自带的solr-dataimporthandler-6.6.0.jar, solr-dataimporthandler-extras-6.6.0.jar和mysql-connector-java-5.1.44.jar拷贝到tomcat中solr的lib下

2.修改solrconfig.xml

找到“<requestHandler name="/select" class="solr.SearchHandler">”,在其上方增加配置
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

3.在solrconfig.xml的同级目录下新建data-config.xml

详细配置:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource name="source1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.29.100:3306/test1" user="root" password="123456"/>
<document name="salesDoc">
<entity pk="id" dataSource="source1" name="user"
query="select id,name,sex,age,insertTime from user"
deltaQuery="select id,name,sex,age,insertTime from user where insertTime >'${dih.last_index_time}'">
<field name="id" column="id"/>
<field name="name" column="name"/>
<field name="sex" column="sex"/>
<field name="age" column="age"/>
<field name="insertTime" column="insertTime"/>
</entity>
</document>
</dataConfig>

配置说明:

  dataSource:设置数据源
  document:Solr的信息的基本单位,它是一组描述某些事物的数据集合
  entity:对应数据表
  pk:表主键
  dataSource:指定使用哪个数据源
  name:表名
  query:查询sql
   deltaQuery:增量更新时使用的查询sql
   ${dih.last_index_time}:最后更新时间
  field:表字段

4.在solrconfig.xml的同级目录下新建dataimport.properties

dataimport.properties内容:

#Mon Nov 06 13:03:53 CST 2017

last_index_time=2017-11-06 13\:03\:50

user.last_index_time=2017-11-06 13\:03\:50

user.last_index_time指定user表的最后更新时间(建议使用此种方式,因为如果有多张表的话可以分别更新)

5.修改managed-schema

    <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="text_ik" indexed="true" stored="true"/>
<field name="sex" type="int" indexed="true" stored="true"/>
<field name="age" type="int" indexed="true" stored="true"/>
<field name="insertTime" type="int" indexed="true" stored="true"/>

6.上传文件

如solr的配置已上传至zookeeper,需重复“集成zookeeper”中的第一步将配置文件上传至zookeeper。(也可以执行“常用命令”中的“更新solr配置到zookeeper”进行单个文件上传)

7.重启tomcat,执行数据导入操作

说明:

  full-import:全量索引
  delta-import:增量索引
  clean:清除原有索引
  commit:执行后提交
  entity:数据源表

8.验证是否成功

九 、定时增量更新索引

1.将solr-dataimportscheduler-1.1.jar拷贝到tomcat中solr的lib目录下面

2.修改tomcat中solr下WEB-INF/web.xml

在servlet节点前面增加:

<listener>
<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>

3.在solr-home下创建conf文件夹

进入conf,在其中新建dataimport.properties

dataimport.properties配置

[root@solr_1 ~]# vim /opt/solr/solr-home/conf/dataimport.properties
 #################################################
# #
# dataimport scheduler properties #
# #
################################################
# to sync or not to sync
# - active; anything else - inactive
syncEnabled=
# which cores to schedule
# in a multi-core environment you can decide which cores you want syncronized
# leave empty or comment it out if using single-core deployment
syncCores=collection1
# solr server name or IP address
# [defaults to localhost if empty]
server=localhost
# solr server port
# [defaults to if empty]
port=
# application name/context
# [defaults to current ServletContextListener's context (app) name]
webapp=solr
# URL params [mandatory]
# remainder of URL
#增量
params=/dataimport?command=delta-import&clean=false&commit=true
# schedule interval
# number of minutes between two runs
# [defaults to if empty]
interval=
# 重做索引的时间间隔,单位分钟,默认7200,即1天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=
# 重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
# 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval**;
# 两种格式:-- :: 或者 ::,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=::

4.重启tomcat,并验证是否成功

在mysql中增加一条数据,等待1分钟,在solr的管理页面查看是否有增加数据

更新solr配置到zookeeper

修改schema.xml配置文件之后,根本不用登录zookeeper删除原有文件,文件会自动覆盖,这里直接上传即可,命令如下:

[root@solr_1 ~]# cd /opt/solr/server/scripts/cloud-scripts/
[root@ cloud-scripts]# ./zkcli.sh -zkhost 192.168.29.110:2181,192.168.29.120:2181,192.168.29.130:2181 -cmd upconfig -confdir /opt/solr/solr-home/core_shopdemo_product2/conf/ -confname myconf

此命令是在配置上传至zookeeper后,修改配置时使用的

Solr+Tomcat+zookeeper部署实战的更多相关文章

  1. solrCloud+tomcat+zookeeper集群配置

    solrcolud安装solrCloud+tomcat+zookeeper部署  转载请出自出处:http://eksliang.iteye.com/blog/2107002 http://eksli ...

  2. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  3. Lucene/Solr搜索引擎开发笔记 - 第2章 Solr安装与部署(Tomcat篇)

    一.安装环境 图1-1 Tomcat和Solr的版本 我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1- ...

  4. CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(五)

    六.修改 /etc/rc.d/rc.local 文件,设置开机自启动 1.nginx 主机的设置 [root@nginx 桌面]# vi /etc/rc.d/rc.local #!/bin/sh to ...

  5. Solr学习笔记-在Tomcat上部署执行Solr

    上一篇我们初识了Solr而且学习了Jetty的启动方式.查看了Solr的管理界面,这一篇我们来实如今Tomcat上部署执行Solr. 部署环境: window7 jdk1.6.0_14 Solr-4. ...

  6. Solr04 - 在Jetty和Tomcat上部署Solr单机服务

    目录 1 准备安装环境 2 通过内部Jetty服务器启动 3 通过配置Tomcat服务器启动 3.1 删除不需要的应用 3.2 修改服务端口 3.3 部署solr.war 3.4 扩展: 虚拟目录发布 ...

  7. Tomcat部署实战

    Tomcat部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.登录官网下载tomcat软件包(http://tomcat.apache.org/) 1>.在安装to ...

  8. IDEA2017.3.3创建第一个javaweb项目及tomcat部署实战

    一.创建简单web项目 1. 选择jdk(这里有点小问题不是很理解,通过java -verbose查找出来的jdk路径在C盘,这里并不能识别,而我jdk安装的时候有自己的路径在D盘,导入后就是图中的j ...

  9. Intellij Idea 2017创建web项目及tomcat部署实战

    相关软件:Intellij Idea2017.jdk16.tomcat7 Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系 ...

随机推荐

  1. 从“跳一跳”来看微信小程序的未来

    从“跳一跳”来看微信小程序的未来   相信大家这两天都被微信新推出的小程序跳一跳刷爆了朋友圈,为了方便用户在使用过程中切换小程序,微信在这次6.6.1版本中加入了下拉可快速切换小程序的功能,而“跳一跳 ...

  2. 用css以写代码形式画一个皮卡丘

    我的个人网站是通过写代码的形式来形成一个网站的,前一阵子在某个大神的github上看到他用写代码的形式来完成一个皮卡丘,于是心血来潮花了半个小时,也完成了一个作品. 这其中涉及到的知识点也不是很复杂, ...

  3. 没什么技术含量的Remove Before Flight

    航空业有很多值得我们借鉴和学习的工作方式,将来有时间我会给大家引荐更多实例. 仔细观察每架停泊着的飞机,会发现机身很多地方都挂着细长的红布条,上面写着"REMOVE BEFORE FLIGH ...

  4. [SCOI2008]斜堆

    题目大意 1.题目描述 斜堆(skew heap)是一种常用的数据结构. 它也是二叉树,且满足与二叉堆相同的堆性质: 每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小. . 但斜堆不必是平衡 ...

  5. Luogu2973:[USACO10HOL]赶小猪

    题面 Luogu Sol 设\(f[i]\)表示炸弹到\(i\)不爆炸的期望 高斯消元即可 另外,题目中的概率\(p/q\)实际上为\(1-p/q\) 还有,谁能告诉我不加\(EPS\),为什么会输出 ...

  6. [BZOJ4195] [NOI2015] 程序自动分析 (并查集)

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...

  7. iOS开发——下载器的功能基本实现

    今天,做了一个下载器的Demo,即从本地配置的Apache服务器上,下载指定的文件.这次,我们下载服务器根目录下的html.mp4文件. 按照惯例,我们先创建一个URL对象和请求. NSURL *ur ...

  8. angular采坑记录

    在angular中会遇到一些莫名的问题,导致不能完成想要的功能,可能是某项用法使用错误,或许是angular相对应不支持,或者是我们功力根本就没有达到.为了在每次采坑之后能有所收获,再遇到时能理解其根 ...

  9. onmouse事件

    常用的鼠标事件:onmouseenter,onmouseleave,onmouseover,onmouseout,onmouseup,onmousedown,onmousewheel,onmousem ...

  10. 用CSS画出好玩的图形

    1.上三角 #triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px so ...