@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();
 }