前提:最近用的CDH 下solr的高可用查询,由于开启了kerberos必须要http权限验证。而且必须采用solrj的CloudSolrServer。在研究一天之后,找到可行方案。直接上干货,希望后来者有所帮助。
@Test
public void TestSolrServer() throws Exception {
System.out.println("---------------------------------------------------");
try {
DefaultHttpClient client = new DefaultHttpClient();
//采用拦截器加权限验证
client.addRequestInterceptor(new HttpRequestInterceptor() {
@Override
public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
String enc = "app1" + ":" + "bdap123";
request.addHeader("Authorization", "Basic " + Base64.encodeBase64String(enc.getBytes()));
}
});
//采用robin环方式负载
LBHttpSolrServer server = new LBHttpSolrServer(client,
"http://172.16.236.2:8983/solr/collection1_shard1_replica1");