1
從這個topic有兩種方法可以從Java代碼中觸發solr優化。
發送http請求或使用solrj api。
但是如何檢查它的進度?
說,這是一個api,返回優化的進度百分比
或像RUNNING/COMPLETED/FAILED字符串。
有沒有這樣的api?Solr觸發器優化和檢查Java代碼的進度
從這個topic有兩種方法可以從Java代碼中觸發solr優化。
發送http請求或使用solrj api。
但是如何檢查它的進度?
說,這是一個api,返回優化的進度百分比
或像RUNNING/COMPLETED/FAILED字符串。
有沒有這樣的api?Solr觸發器優化和檢查Java代碼的進度
是的,solrj api中的optimize()是同步方法。
以下是我用來監視優化進度的內容。這裏
CloudSolrClient client = null;
try {
client = new CloudSolrClient(zkClientUrl);
client.setDefaultCollection(collectionName);
m_logger.info("Explicit optimize of collection " + collectionName);
long optimizeStart = System.currentTimeMillis();
UpdateResponse optimizeResponse = client.optimize();
for (Object object : optimizeResponse.getResponse()) {
m_logger.info("Solr optimizeResponse" + object.toString());
}
if (optimizeResponse != null) {
m_logger.info(String.format(
" Elapsed Time(in ms) - %d, QTime (in ms) - %d",
optimizeResponse.getElapsedTime(),
optimizeResponse.getQTime()));
}
m_logger.info(String.format(
"Time spent on Optimizing a collection %s :"
+ (System.currentTimeMillis() - optimizeStart)
/1000 + " seconds", collectionName));
} catch (Exception e) {
m_logger.error("Failed during explicit optimize on collection "
+ collectionName, e);
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
throw new RuntimeException(
"Failed to close CloudSolrClient connection.", e);
}
client = null;
}
}
面臨同樣的問題..你已經找到了一種解決方法? – Yuval