使用Solrj Api和Kerberized Solr创建Solr客户端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Solrj Api和Kerberized Solr创建Solr客户端相关的知识,希望对你有一定的参考价值。

我正在尝试使用solrj api为kerberised solr创建一个solr客户端。根据solrj的文档,需要在代码中设置HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());

但是solrj api jar在setConfigurer类中没有HttpClientUtil函数。我正在使用maven的以下依赖项。

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>7.2.1</version>
</dependency>

是否可以使用new HttpSolrClient.Builder创建solr客户端并启用kerberisation来读取jaas.config文件以进行身份​​验证和授权。

目前我正在创建如下的solr客户端;

new HttpSolrClient.Builder("solrUrlString").build()

但我没有看到以上述方式启用Krb5HttpClientConfigurer的选项

答案

“HttpClientUtil.setConfigurer”方法从“solr-solrj”版本6.0.0折旧,最后从7.0.0版本开始删除。

但是仍然没有使用创建Kerberized Solr客户端的新方法更新solrj的文档。

想出了在7.0.0版本以后的方法:

        Builder solrClientBuilder = new HttpSolrClient.Builder("https://<hostname>/solr/<collectionName>");
        Krb5HttpClientBuilder krbBuilder = new Krb5HttpClientBuilder();
        SolrHttpClientBuilder krb5HttpClientBuilder = krbBuilder.getHttpClientBuilder(java.util.Optional.empty());
        HttpClientUtil.setHttpClientBuilder(krb5HttpClientBuilder);
        ModifiableSolrParams params = new ModifiableSolrParams();
        params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false);
        CloseableHttpClient httpClient = HttpClientUtil.createClient(params);

        SolrClient client = solrClientBuilder.withHttpClient(httpClient).build();

以上是关于使用Solrj Api和Kerberized Solr创建Solr客户端的主要内容,如果未能解决你的问题,请参考以下文章

solr 学习之solrJ

用于部分文档更新的 solrj api

搜索引擎系列十:Solr(solrj 索引API 结构化数据导入)

使用SolrJ(即java客户端)开发Solr。

有 SolrJ 查询生成器吗?

solr7之solrJ的使用