【问题标题】:creating shard in SOLR在 SOLR 中创建分片
【发布时间】:2017-04-28 11:37:03
【问题描述】:

我是 Apache Solr 的新手。我创建了一个名为testCollection 的新集合。这个集合是通过 solr 管理控制台创建的,它的路由器类型是隐式的。我正在使用下面的代码为上述集合创建一个新分片

SolrServer solr = new HttpSolrServer("http://localhost:8983/solr/testCollection");

        UpdateRequest request = new UpdateRequest();
        request.setPath("http://localhost:8983/solr/testCollection");
        request.setMethod(METHOD.GET);
        request.setParam("action", "CREATESHARD");
        request.setParam("collection", "testCollection");
        request.setParam("shard", "latestShard");
        solr.request(request);
        solr.commit();

在执行上述操作时,我没有收到任何异常,但没有创建新的分片。我正在使用 solr 6.1。虽然这个问题看起来可能与Solr 4 - adding shard 重复,但没有可用的代码 sn-p,也没有提到如何使用 SolrJ 来实现这一点。任何帮助将不胜感激。

问候, 安库尔

【问题讨论】:

    标签: java solr solrj


    【解决方案1】:

    您使用了错误的 API。

    UpdateRequest 用于对索引数据执行操作(添加/删除文档等),而不是用于管理集合的设置方式,例如,用于创建分片,您需要使用 this

    【讨论】:

    • 感谢您为我指明正确的方向!我还没有尝试过,但我希望下面的代码可以工作: SolrServer solr = new HttpSolrServer("localhost:8983/solr"); CollectionAdminResponse response = CollectionAdminRequest.createShard("testCollection", "test2", solr); System.out .println("错误:"+response.getErrorMessages()); solr.commit();
    【解决方案2】:

    仅当集合的大小增长到对于节点来说太大时才创建分片,因此拆分集合添加分片,最后将分片重新定位到不同的节点上。

    虽然可能,但我想不出在 Java 中这样做会是一个好主意。

    这比编写 http 请求并将其放入浏览器要复杂得多。

    http://localhost:8983/solr/admin/collections?action=CREATESHARD&collection=testCollection&shard=shard2

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多