@Override public void onAddedDocument(UpdateResponse response) { addedUpdatesInLastInterval = addTime(updatesTime, (long)response.getQTime(), addedUpdatesInLastInterval); }
@Override public void onCommit(UpdateResponse response) { addedCommitsInLastInterval = addTime(commitTime, (long)response.getQTime(), addedCommitsInLastInterval); }
private static boolean evaluate(UpdateResponse response) { LOGGER.debug("Response returned: Status code {}, Elapsed time {}, QTime {}", response.getStatus(), response.getElapsedTime(), response.getQTime()); //any other status code means 'there was an error' return response.getStatus() == 0; }
private static boolean evaluate(UpdateResponse response) { LOGGER.debug("Response returned: Status code {}, Elapsed time {}, QTime {}", response.getStatus(), response.getElapsedTime(), response.getQTime()); //any other status code means 'there was an error' return response.getStatus() == 0; }
private IndexResult indexMultipleDocuments(List<Document> docs, int withinMs) { final List<SolrInputDocument> solrDocs = docs.parallelStream() .map(doc -> createInputDocument(doc)) .collect(Collectors.toList()); try { if (solrClientLogger.isTraceEnabled()) { solrClientLogger.debug(">>> add({})", solrDocs); } else { solrClientLogger.debug(">>> add({})", solrDocs); } for(Document doc : docs){ removeNonParentDocument(doc, withinMs); } final UpdateResponse response = withinMs < 0 ? this.solrClient.add(solrDocs) : this.solrClient.add(solrDocs, withinMs); return new IndexResult(Long.valueOf(response.getQTime())).setElapsedTime(response.getElapsedTime()); } catch (SolrServerException | IOException e) { log.error("Cannot index documents {}", solrDocs, e); throw new SearchServerException("Cannot index documents", e); } }
@Override public DeleteResult execute(Delete delete, DocumentFactory factory) { String query = SolrUtils.Query.buildFilterString(delete.getQuery(), factory, delete.getUpdateContext(),true); try { solrClientLogger.debug(">>> delete query({})", query); //Finding the ID of the documents to delete final SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam(CommonParams.Q, "*:*"); solrQuery.setParam(CommonParams.FQ,query.trim().replaceAll("^\\+","").split("\\+")); final QueryResponse response = solrClient.query(solrQuery, REQUEST_METHOD); long qTime = 0; long elapsedTime = 0; if(Objects.nonNull(response) && CollectionUtils.isNotEmpty(response.getResults())){ final List<String> idList = response.getResults().stream().map(doc -> (String) doc.get(ID)).collect(Collectors.toList()); final UpdateResponse deleteResponse = solrClient.deleteById(idList); qTime = deleteResponse.getQTime(); elapsedTime = deleteResponse.getElapsedTime(); //Deleting nested documents final UpdateResponse deleteNestedResponse = solrClient.deleteByQuery("_root_:(" + StringUtils.join(idList, " OR ") + ")"); qTime += deleteNestedResponse.getQTime(); elapsedTime += deleteNestedResponse.getElapsedTime(); } return new DeleteResult(qTime).setElapsedTime(elapsedTime); } catch (SolrServerException | IOException e) { log.error("Cannot delete with query {}", query, e); throw new SearchServerException("Cannot delete with query", e); } }
private IndexResult indexSingleDocument(Document doc, int withinMs) { final SolrInputDocument document = createInputDocument(doc); try { if (solrClientLogger.isTraceEnabled()) { solrClientLogger.debug(">>> add({}): {}", doc.getId(), ClientUtils.toXML(document)); } else { solrClientLogger.debug(">>> add({})", doc.getId()); } removeNonParentDocument(doc, withinMs); final UpdateResponse response = withinMs < 0 ? this.solrClient.add(document) : this.solrClient.add(document, withinMs); return new IndexResult(Long.valueOf(response.getQTime())).setElapsedTime(response.getElapsedTime()); } catch (SolrServerException | IOException e) { log.error("Cannot index document {}", document.getField(ID) , e); throw new SearchServerException("Cannot index document", e); } }
@Override public DeleteResult deleteWithin(Document doc, int withinMs) { try { long qTime = 0; long elapsedTime = 0; solrClientLogger.debug(">>> delete({})", doc.getId()); final UpdateResponse deleteResponse = withinMs < 0 ? solrClient.deleteById(doc.getId()) : solrClient.deleteById(doc.getId(), withinMs); qTime = deleteResponse.getQTime(); elapsedTime = deleteResponse.getElapsedTime(); //Deleting nested documents final UpdateResponse deleteNestedResponse = withinMs < 0 ? solrClient.deleteByQuery("_root_:" + doc.getId()) : solrClient.deleteByQuery("_root_:" + doc.getId(), withinMs); qTime += deleteNestedResponse.getQTime(); elapsedTime += deleteNestedResponse.getElapsedTime(); return new DeleteResult(qTime).setElapsedTime(elapsedTime); } catch (SolrServerException | IOException e) { log.error("Cannot delete document {}", doc.getId() , e); throw new SearchServerException("Cannot delete document", e); } }
log.debug("Atomic Update - Updating document [{}]: current version [{}]", finalDoc.getFieldValue(SolrUtils.Fieldname.ID), version); final UpdateResponse response = solrClient.add(finalDoc); log.debug("Atomic Update - Solr update time: query time [{}] - elapsed time [{}]", response.getQTime(), response.getQTime()); return true; } catch (HttpSolrClient.RemoteSolrException e) {