Проект: Spring Boot
Я обновляю свой документ elasticsearch следующим образом:
@Override
public Document update(DocumentDTO document) {
try {
Document doc = documentMapper.documentDTOToDocument(document);
Optional<Document> fetchDocument = documentRepository.findById(document.getId());
if (fetchDocument.isPresent()) {
fetchDocument.get().setTag(doc.getTag());
Document result = documentRepository.save(fetchDocument.get());
final UpdateRequest updateRequest = new UpdateRequest(Constants.INDEX_NAME, Constants.INDEX_TYPE, document.getId().toString());
updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
updateRequest.doc(jsonBuilder().startObject().field("tag", doc.getTag()).endObject());
UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
log.info("ES result : "+ updateResponse.status());
return result;
}
} catch (Exception ex) {
log.info(ex.getMessage());
}
return null;
}
С его помощью мой документ обновлен успешно, и версия увеличивается, но когда версия становится 20+.
Для получения данных требуется много времени (около 14se c).
Я все еще не понимаю, как выполняется управление версиями. Как это работает в сценарии обновления и удаления? Во время поиска он обрабатывает всю версию данных и отправляет последнюю? Так ли это?