最近公司單位搬遷,全部的服務都中止了,我負責的elasticsearch不知道怎麼回事,一直不能運行呢,所以,我一直在負責調試工做。通過兩天的調試工做,我發現新的服務器增長了httpclient認證機制,通過幾回研究,發現服務器的新增了以下內容:緩存
http.basic.log: false
http.basic.user: "hett"
http.basic.password: "****"服務器
所以,每次在進行ik拆分詞的時候會有提示信息就是:http沒有認證,所以,在加載http連接之間加入提早認證機制,在初始化bean的時候就開始認證,代碼作以下修改:elasticsearch
public class ElasticsearchServiceImpl implements IElasticsearchService , InitializingBeanide
改類繼承初始化bean的認證debug
實現父類的方法:調試
@Override
public void afterPropertiesSet() throws Exception {
try {
Properties props = PropertiesLoaderUtils
.loadAllProperties("********");
String authUser = StringUtil
.null2Str(props.getProperty("username"));
String authPwd = StringUtil.null2Str(props.getProperty("password"));
credentialContext = HttpClientContext.create();
// 認證提供者
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(authUser, authPwd));
AuthCache authCache = new BasicAuthCache();
// 提早填充認證信息緩存到上下文中,這樣,以這個上下文執行的方法,就會使用搶先認證。可能會出錯
credentialContext.setAuthCache(authCache);
credentialContext.setCredentialsProvider(credsProvider);
} catch (Exception ex) {
logger.warn("read elasticsearch credential error", ex);
}
}blog
再次訪問的時候提示以下:繼承
debug拋出的信息是認證經過get
通過幾天的折騰終於完成了搜索標籤的之類的服務啦
好開心啊it