【问题标题】:Solr Import via ModifiableSolrParams with security credentials通过 ModifiableSolrParams 导入具有安全凭证的 Solr
【发布时间】:2017-07-19 13:56:09
【问题描述】:

我正在尝试使用 ModifiableSolrParams 通过 java 执行导入:

能否请您指出正确的方向或参考如何添加安全凭据(用户名/密码)以触发导入。

当前代码

    SolrServer server = new HttpSolrServer(baseurl);

    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("command", "full-import");
    params.set("clean", "true");
    params.set("commit", "true");

    QueryRequest request = new QueryRequest(params);
    request.setPath("/dataimport");

    server.request(request);

【问题讨论】:

    标签: java solr solrj dataimporthandler


    【解决方案1】:

    您需要将 HttpRequestInterceptor 添加到您的 HttpServer。此拦截器将能够为您的每个请求添加授权标头。

    对于 cloud Solr,允许执行此操作的 util 类是 HttpClientUtil。您可以从此类开始,或检查 HttpSolrServer 中实际存在 HttpClient 的位置。

    【讨论】:

    • 会检查这个。我看到很多具有抢先身份验证的解决方案,但似乎无法使其发挥作用。我在上述解决方案中添加了以下参数 params.set(HttpClientUtil.PROP_BASIC_AUTH_USER,"USER"); params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS,"PASSWORD");但我收到以下错误
    • 这是我得到的错误:线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.solr.common.SolrException$ErrorCode.getErrorCode(I)Lorg/apache/solr/常见/SolrException$ErrorCode;
    【解决方案2】:

    我放弃了 Solrj,转而采用这种方法。

    HttpClient Client = new DefaultHttpClient();
    String userpass = usr + ":" + pwd;
    
    HttpPost httpGet = new HttpPost(dataimport_cmd);
    String encoding = 
    DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8"));
    httpGet.setHeader("Authorization", "Basic " + encoding);
    
        Client.execute(httpGet);
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2016-01-20
      相关资源
      最近更新 更多