diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 82f421646..79b2acf05 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -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(); } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java index 3e0d57db2..846036f4b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java @@ -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; } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQueryBuilder.java index ed07724c3..7708c7841 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQueryBuilder.java @@ -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; }