0

尝试在以独立模式运行的 Solr 中使用 V2 API 修改配置。

请求构建如下:

V2Request v2Request = new V2Request.Builder(String.format("/collections/%s/config", collectionName))
                                                    .withMethod(SolrRequest.METHOD.POST)
                                                    .withPayload(actionPayLoad)
                                                    .build();

这导致 SolrException:“Solr not running in cloud mode”

看来 V2 Http 请求是通过 org.apache.solr.apiV2HttpCall(Maven: org.apache.solr:solr-core:7.0.0) 生成的,它需要运行 Zookeeper

  protected DocCollection getDocCollection(String collectionName) {
    if (!cores.isZooKeeperAware()) {
      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Solr not running in cloud mode ");
    }

在没有 Zookeeper 的情况下,Solr 是否有任何等效的 Config API 调用以独立模式运行?

刚刚从https://lucene.apache.org/solr/guide/7_0/config-api.html注意到它应该以类似的方式工作:

Config API 允许使用类似 REST 的 API > 调用来操作 solrconfig.xml 的各个方面。此功能默认启用,并且在 SolrCloud 和独立模式下的工作方式类似。> 许多常用编辑的属性(例如缓存大小和提交设置)和请求处理程序 > 定义可以使用此 API 进行更改。

4

1 回答 1

0

这是通过 V1 API 更新 solr 配置的解决方案:

Collection<ContentStream> contentStreams = ClientUtils.toContentStreams(actionPayLoad, "application/json; charset=UTF-8");
                GenericSolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.POST, String.format("/%s/config", collectionName), null);
                request.setContentStreams(contentStreams);
                request.setUseV2(false);
于 2020-03-05T22:12:50.817 回答