Skip to content

Commit 2024067

Browse files
committed
Java API: BulkRequest#add(Iterable) to support UpdateRequests
Closes elastic#6551
1 parent 9569166 commit 2024067

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

src/main/java/org/elasticsearch/action/bulk/BulkRequest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,7 @@ public BulkRequest add(ActionRequest request, @Nullable Object payload) {
9898
*/
9999
public BulkRequest add(Iterable<ActionRequest> requests) {
100100
for (ActionRequest request : requests) {
101-
if (request instanceof IndexRequest) {
102-
add((IndexRequest) request);
103-
} else if (request instanceof DeleteRequest) {
104-
add((DeleteRequest) request);
105-
} else {
106-
throw new ElasticsearchIllegalArgumentException("No support for request [" + request + "]");
107-
}
101+
add(request);
108102
}
109103
return this;
110104
}

src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,19 @@
2121

2222
import com.google.common.base.Charsets;
2323
import org.apache.lucene.util.Constants;
24+
import org.elasticsearch.action.ActionRequest;
2425
import org.elasticsearch.action.delete.DeleteRequest;
2526
import org.elasticsearch.action.index.IndexRequest;
2627
import org.elasticsearch.action.update.UpdateRequest;
28+
import org.elasticsearch.client.Requests;
2729
import org.elasticsearch.common.Strings;
2830
import org.elasticsearch.common.bytes.BytesArray;
2931
import org.elasticsearch.test.ElasticsearchTestCase;
3032
import org.junit.Test;
3133

34+
import java.util.ArrayList;
35+
import java.util.List;
36+
3237
import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath;
3338
import static org.hamcrest.Matchers.equalTo;
3439
import static org.hamcrest.Matchers.instanceOf;
@@ -98,4 +103,18 @@ public void testBulkAllowExplicitIndex() throws Exception {
98103
bulkAction = copyToStringFromClasspath("/org/elasticsearch/action/bulk/simple-bulk5.json");
99104
new BulkRequest().add(new BytesArray(bulkAction.getBytes(Charsets.UTF_8)), true, "test", null, false);
100105
}
106+
107+
@Test
108+
public void testBulkAddIterable() {
109+
BulkRequest bulkRequest = Requests.bulkRequest();
110+
List<ActionRequest> requests = new ArrayList<>();
111+
requests.add(new IndexRequest("test", "test", "id").source("field", "value"));
112+
requests.add(new UpdateRequest("test", "test", "id").doc("field", "value"));
113+
requests.add(new DeleteRequest("test", "test", "id"));
114+
bulkRequest.add(requests);
115+
assertThat(bulkRequest.requests().size(), equalTo(3));
116+
assertThat(bulkRequest.requests().get(0), instanceOf(IndexRequest.class));
117+
assertThat(bulkRequest.requests().get(1), instanceOf(UpdateRequest.class));
118+
assertThat(bulkRequest.requests().get(2), instanceOf(DeleteRequest.class));
119+
}
101120
}

0 commit comments

Comments
 (0)