zoukankan      html  css  js  c++  java
  • SolrCloud攻略

    SolrCloud攻略

    近期一直在使用SolrCloud,乘着酒醉大概总结一下。

    1.安装

    原来一直有个误区,认为SolrCloud启动时,必须至少有个core才可以,其实不然。

    首先按照Solr官方wiki上正常部署Solr,然后在Tomcat的启动参数中加入以下参数:

    如果使用内置的zookeeper:-DzkRun -DzkHost=localhost:9080。对于DzHost,可以是多个地址,用逗号分割,端口是Tomcat的端口+1000。一般Tomcat的端口是8080,所以这里是9080。

    如果使用外部的zookeeper:-DzkHost={ip:port}

    对于这两种情况,使用多个zookeeper时,多需要修改zoo.cfg文件,比如我有三个zookeeper,zoo.cfg内容如下:

    server.1={ip:2888:3888}
    server.2={ip:2888:3888}
    server.3={ip:2888:3888}

    Solr正常启动后,对于solr 4.5以前的版本,打开Solr Admin管理界面是有错误提示的,可以忽略,对于最新发布的Solr 4.5是没有错误提示的。

    2.上传SolrCloud Collection文件

    java -cp "C:Program FilesApache Software FoundationTomcat 7.0webappssolr.patent.comsolrWEB-INFlib*" org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9080 -confdir {Solr Collection配置文件地址} -confname {自定义的Solr Collection 配置名称}

    可以上传多个配置。

    3.创建Collection

    http://localhost:8080/solr/admin/collections?action=CREATE&name={Collection名称}&numShards={分片数量}&collection.configName={指定的Collection配置文件名称}

    创建完Collection后,对于Solr 4.5以前版本来说,就可以正常打开Solr Admin管理界面来说。对于最新发布的Solr 4.5,通过测试,是有Bug的(我已经提交给Apache Solr),修改CoreAdminHandler,在第453行下加入以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    String opts = params.get(CoreAdminParams.CONFIG);
            CloudDescriptor cd = dcore.getCloudDescriptor();
     
            if (cd != null) {
                cd.setParams(req.getParams());
     
                opts = params.get(CoreAdminParams.COLLECTION);
                if (opts != null)
                    cd.setCollectionName(opts);
     
                opts = params.get(CoreAdminParams.SHARD);
                if (opts != null)
                    cd.setShardId(opts);
     
                opts = params.get(CoreAdminParams.SHARD_RANGE);
                if (opts != null)
                    cd.setShardRange(opts);
     
                opts = params.get(CoreAdminParams.SHARD_STATE);
                if (opts != null)
                    cd.setShardState(opts);
     
                opts = params.get(CoreAdminParams.ROLES);
                if (opts != null)
                    cd.setRoles(opts);
     
                opts = params.get(CoreAdminParams.CORE_NODE_NAME);
                if (opts != null)
                    cd.setCoreNodeName(opts);
     
                Integer numShards = params.getInt(ZkStateReader.NUM_SHARDS_PROP);
                if (numShards != null)
                    cd.setNumShards(numShards);
            }

      

    4.创建索引

    示例代码如下(scala编写):

    1
    2
    3
    4
    5
    6
    7
    val cloudServer = new CloudSolrServer({zookeeper地址})
    cloudServer.setDefaultCollection("{默认Collection名称}")
    cloudServer.setParser(new BinaryResponseParser())
    val updateRequest = new UpdateRequest()
    updateRequest.setParam("collection", "{要更新的Collection名称}")
    updateRequest.add({更新的文档})
    updateRequest.process(cloudServer)

    5.查询

    示例代码如下(scala编写):

    1
    2
    3
    4
    5
    val cloudServer = new CloudSolrServer({zookeeper地址})
    cloudServer.setDefaultCollection("{默认Collection名称}")
    cloudServer.setParser(new BinaryResponseParser()     
    val response = new QueryRequest(solrQuery, METHOD.POST).process(cloudServer)
    val result = response.getResults()

    总体来说SolrCloud使用起来各方面还是不错的,其他5.0的发布!

     
     
    分类: Lucene
    标签: solrlucenesolrcloud
  • 相关阅读:
    最快的进程间通信方式你get了么
    【Java】简易Socket连接实现
    【Java】基于RXTX的Java串口通信
    【Android】WebDav For Android
    【Java】Swing实现一个简单的计算器
    (未完成)【Android】MVP模式初见(一)
    【编译原理】TEST递归下降演示
    【Android】LitePal的基础
    【Flutter】Demo1一个名字生成器
    【Flutter】环境搭建以及HelloWorld创建
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3356111.html
Copyright © 2011-2022 走看看