使用带有 Kerberized Solr 的 Solrj Api 创建 Solr 客户端
Posted
技术标签:
【中文标题】使用带有 Kerberized Solr 的 Solrj Api 创建 Solr 客户端【英文标题】:Creating Solr client using Solrj Api with Kerberized Solr 【发布时间】:2018-08-02 00:37:55 【问题描述】:我正在尝试使用 solrj api 为 kerberized solr 创建一个 solr 客户端。而根据solrj的文档,需要在代码中设置HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
。
但是 solrj api jar 在 HttpClientUtil
类中没有函数 setConfigurer
。我正在使用来自 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
的选项
【问题讨论】:
现在是 2019 年 10 月,https://lucene.apache.org/solr/guide/8_1/kerberos-authentication-plugin.html#using-solrj-with-a-kerberized-solr 的 Solr 文档仍未更新。真是尴尬。 【参考方案1】:“HttpClientUtil.setConfigurer”方法从“solr-solrj”版本 6.0.0 开始被弃用,最终从版本 7.0.0 开始被删除。
但solrj 的文档仍未更新为创建 Kerberized Solr 客户端的新方法。
在 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();
【讨论】:
以上是关于使用带有 Kerberized Solr 的 Solrj Api 创建 Solr 客户端的主要内容,如果未能解决你的问题,请参考以下文章
使用 Kerberized Kafka 配置 Hortonworks NiFI
Java 连接 HBase ( kerberized 集群 )
Node.js和npm phoenix-client软件包与kerberized Apache phoenix连接
如何将 OpenShift 上的 KSQLDB 集群连接到本地 Kerberized Kafka 集群
PHP警告:无法加载动态库'/usr/lib64/php/modules/solr.so'未定义符号:php_json_decode_ex in Unknown on line 0