@Override public UpdateResponse update(UpdateQuery query) { String indexName = isNotBlank(query.getIndexName()) ? query.getIndexName() : getPersistentEntityFor(query.getClazz()).getIndexName(); String type = isNotBlank(query.getType()) ? query.getType() : getPersistentEntityFor(query.getClazz()).getIndexType(); Assert.notNull(indexName, "No index defined for Query"); Assert.notNull(type, "No type define for Query"); Assert.notNull(query.getId(), "No Id define for Query"); Assert.notNull(query.getIndexRequest(), "No IndexRequest define for Query"); UpdateRequestBuilder updateRequestBuilder = client.prepareUpdate(indexName, type, query.getId()); if (query.DoUpsert()) { updateRequestBuilder .setDocAsUpsert(true) .setUpsert(query.getIndexRequest()) .setDoc(query.getIndexRequest()); } else { updateRequestBuilder.setDoc(query.getIndexRequest()); } return updateRequestBuilder.execute().actionGet(); }