DATAES-97 - Use UpdateRequest instead of IndexRequest

This commit is contained in:
xjrk58 2014-06-20 12:46:32 +02:00 committed by Mohsin Husen
parent cf54ba4e8f
commit 0317dcb275
3 changed files with 28 additions and 10 deletions

View File

@ -394,13 +394,17 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
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");
Assert.notNull(query.getUpdateRequest(), "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());
.setUpsert(query.getUpdateRequest())
.setDoc(query.getUpdateRequest().doc())
.setScript(query.getUpdateRequest().script())
.setScriptParams(query.getUpdateRequest().scriptParams())
.setScriptLang(query.getUpdateRequest().scriptLang());
} else {
updateRequestBuilder.setDoc(query.getIndexRequest());
updateRequestBuilder.setDoc(query.getUpdateRequest().doc());
}
return updateRequestBuilder.execute().actionGet();
}

View File

@ -16,6 +16,7 @@
package org.springframework.data.elasticsearch.core.query;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.update.UpdateRequest;
/**
* @author Rizwan Idrees
@ -24,7 +25,7 @@ import org.elasticsearch.action.index.IndexRequest;
public class UpdateQuery {
private String id;
private IndexRequest indexRequest;
private UpdateRequest updateRequest;
private String indexName;
private String type;
private Class clazz;
@ -38,14 +39,14 @@ public class UpdateQuery {
this.id = id;
}
public IndexRequest getIndexRequest() {
return indexRequest;
public UpdateRequest getUpdateRequest() {
return updateRequest;
}
public void setIndexRequest(IndexRequest indexRequest) {
this.indexRequest = indexRequest;
public void setUpdateRequest(UpdateRequest updateRequest) {
this.updateRequest = updateRequest;
}
public String getIndexName() {
return indexName;
}

View File

@ -16,6 +16,7 @@
package org.springframework.data.elasticsearch.core.query;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.update.UpdateRequest;
/**
* @author Rizwan Idrees
@ -24,6 +25,7 @@ import org.elasticsearch.action.index.IndexRequest;
public class UpdateQueryBuilder {
private String id;
private UpdateRequest updateRequest;
private IndexRequest indexRequest;
private String indexName;
private String type;
@ -35,6 +37,11 @@ public class UpdateQueryBuilder {
return this;
}
public UpdateQueryBuilder withUpdateRequest(UpdateRequest updateRequest) {
this.updateRequest = updateRequest;
return this;
}
public UpdateQueryBuilder withIndexRequest(IndexRequest indexRequest) {
this.indexRequest = indexRequest;
return this;
@ -66,7 +73,13 @@ public class UpdateQueryBuilder {
updateQuery.setIndexName(indexName);
updateQuery.setType(type);
updateQuery.setClazz(clazz);
updateQuery.setIndexRequest(indexRequest);
if (this.indexRequest != null) {
if (this.updateRequest == null) {
updateRequest = new UpdateRequest();
}
updateRequest.doc(indexRequest);
}
updateQuery.setUpdateRequest(updateRequest);
updateQuery.setDoUpsert(doUpsert);
return updateQuery;
}