部署基于tomcat 8 的solrCloud 5.5集群

部署基于tomcat 8 的solrCloud 5.5集群

@(OTHERS)[solr]

(一)版本及准备工作

1、下载并解压tomcat, solr至目录/home/hadoop/tomcat, /home/hadoop/solr
其中版本为:

solr-5.5.2
tomcat-8.5.4

(二)准备solr相关webapp内容,并复制至tomcat

1、将/home/hadoop/solr-5.5.2/server/lib/ext/*中的jar包复制到/home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib,主要是slf4j与log4j相关的jar包,tomcat加载solr时要用到这些jar包。

cp /home/hadoop/solr-5.5.2/server/lib/ext/* /home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib

2、将上述solr webapp整个目录复制到tomcat/webapps中,并重命名为solr

 cp -r /home/hadoop/solr-5.5.2/server/solr-webapp/webapp /home/hadoop/tomcat-8.5.4/webapps/solr

(三)准备配置文件并上传至zk

1、准备一个collection配置文件
一个collection需要至少schema.xml与solrconfig 2份配置文件,除此以外还有一些stopword,同义词等配置文件。我们使用官方提供的基本配置basic_configs

mkdir /home/hadoop/solr-5.5.2/conf
cp -r /home/hadoop/solr-5.5.2/server/solr/configsets/basic_configs/conf /home/hadoop/solr-5.5.2/conf/basic_configs

注意这里使用了managed-schema,而不是schema.xml。之后再分析。

2、将配置文件上传至zk

 java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr-5.5.2/conf/basic_configs -confname basic_configs

然后再到zk中检查配置是否成功上传。

(四)准备solr的索引数据目录及配置

1、创建用于保存索引文件的目录

mkdir /disk1/solr55/data/solr-core
chown -R hadoop:hadoop /disk1/solr55

注意这个目录的权限。

2、将solr.xml复制到上述目录

cp /home/hadoop/solr-5.5.2/server/solr/solr.xml /disk1/solr55/data/solr-core/

3、 修改solr.xml,修改hostPort和Tomcat端口一致

<int name="hostPort">8080</int>

(五)配置tomcat并启动

1、在tomca/conf目录下创建Catalina/localhost目录

mkdir -p /home/hadoop/tomcat-8.5.4/conf/Catalina/localhost

2、在上述目录中创建solr.xml,此为Solr/home的配置文件。

<?xml version="1.0" encoding="UTF-8"?>
 <Context docBase="/home/hadoop/tomcat-8.5.4/webapps/solr" debug="0" crossContext="true"> 
 <Environment name="solr/home" type="java.lang.String" value="/disk1/solr55/data/solr-core/" override="true"/> 
</Context>

3、修改bin/catalina.sh中的JAVA_OPTS变量,加上zk的配置:

JAVA_OPTS="$JAVA_OPTS -DzkHost=10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55"

4、启动tomcat

bin/startup.sh

注意先为几个脚本加上权限:

chmod +x startup.sh shutdown.sh  catalina.sh

5、验证UI

http://10.120.69.104:8080/solr/index.html

有个小问题:如果上面的URL不加上index.html则加载不成功,看哪里的设置把默认加载index的配置去掉了。这会不会影响索引,等下试一下。

6、建一个测试collection验证功能
因为目前只有一台机器,所以只能建一个shard, 一个副本了。
配置文件使用上面的basic_configs

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_1&numShards=1&replicationFactor=1&collection.configName=basic_configs'

然后在UI上查看是否已经创建成功。

(六)添加其它节点

1、将/home/hadoop/solr-5.5.2、/home/hadoop/tomcat-8.5.4与/disk1/solr55/data/ 三个目录复制到其它机器相同的目录中。

2、启动tomcat

(七)创建core

curl ‘http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_2&numShards=2&replicationFactor=2&collection.configName=basic_configs

创建的2个core分别如下图:

(八)使用API索引与搜索

1、索引

public class IndexDemo {

    private static final String DEFAULT_COLLECTION = "collection4";
    //private static final String SOLR_ZK = "10.120.69.101:2181/solr";
    private static final String SOLR_ZK = "10.120.69.101:2181/solr55";

    public static void main(String[] args) throws SolrServerException, IOException {

        SolrInputDocument doc = new SolrInputDocument();// 实例化索引Doc
        doc.addField("id", "index_demo");// 添加主键
        //doc.addField("qualifier_col", "valuedemo");// 添加主键
        CloudSolrClient client = new CloudSolrClient(SOLR_ZK);// cloud模式
        client.setDefaultCollection(DEFAULT_COLLECTION);
        client.add(doc);
      //client.add("collection1", doc);
        client.commit();
        client.close();

    }

}

2、索引

public class QueryDemo {

    private static final String DEFAULT_COLLECTION = "collection4";
    private static final String SOLR_ZK = "10.120.69.101:2181/solr55";
//  private static final String SOLR_ZK = "10.120.69.101:2181/solr";

    public static void main(String[] args) throws SolrServerException, IOException {
        try (CloudSolrClient client = new CloudSolrClient(SOLR_ZK);) {// cloud模式
            //根据id查doc
            SolrDocument doc = client.getById(DEFAULT_COLLECTION, "index_demo");
            if(null != doc){

            for (String field : doc.getFieldNames()) {
                System.out.println(field + " : " + doc.getFieldValues(field));
            }
        }

            //根据field查doc
            SolrQuery query = new SolrQuery();
            //query.setQuery(mQueryString);
            query.setRequestHandler("/query");
    //          query.set("q", "qualifier_col:valuedemo");//返回index_demo
    //          query.set("q", "qualifier_col:valuedemo OR id:index_demo2");//返回index_demo
    //          query.set("q", "qualifier_col:valuedemo AND id:index_demo2");//返回空
    //          query.set("q", "qualifier_col:valuede*");//返回index_demo
            QueryResponse response = client.query(DEFAULT_COLLECTION, query);
            for(SolrDocument doc2 :response.getResults()){
                System.out.println(doc2.getFieldValue("id"));
            }
        }

    }

}

(九)zk中的内容

[zk: 10.120.69.101(CONNECTED) 16] get /solr5/
configs             clusterstate.json   aliases.json        live_nodes          overseer            overseer_elect      collections

通过命令上传的配置文件都在configs目录中,collections中是各个collection的信息。
其它目录的详细信息以后再分析。

(十)创建新的core

1、准备配置文件

2、上传至zk

java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr/myconf/ -confname myconf

3、创建core

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=1&collection.configName=myconf'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值