|
@@ -199,6 +199,43 @@ public class BulkWithUpdatesIT extends ESIntegTestCase {
|
|
|
assertThat(((Number) getResponse.getSource().get("field")).longValue(), equalTo(4L));
|
|
|
}
|
|
|
|
|
|
+ public void testBulkUpdateWithScriptedUpsertAndDynamicMappingUpdate() throws Exception {
|
|
|
+ assertAcked(prepareCreate("test").addAlias(new Alias("alias")));
|
|
|
+ ensureGreen();
|
|
|
+
|
|
|
+ final Script script = new Script(ScriptType.INLINE, CustomScriptPlugin.NAME, "ctx._source.field += 1", Collections.emptyMap());
|
|
|
+
|
|
|
+ BulkResponse bulkResponse = client().prepareBulk()
|
|
|
+ .add(client().prepareUpdate().setIndex(indexOrAlias()).setId("1")
|
|
|
+ .setScript(script).setScriptedUpsert(true).setUpsert("field", 1))
|
|
|
+ .add(client().prepareUpdate().setIndex(indexOrAlias()).setId("2")
|
|
|
+ .setScript(script).setScriptedUpsert(true).setUpsert("field", 1))
|
|
|
+ .get();
|
|
|
+
|
|
|
+ logger.info(bulkResponse.buildFailureMessage());
|
|
|
+
|
|
|
+ assertThat(bulkResponse.hasFailures(), equalTo(false));
|
|
|
+ assertThat(bulkResponse.getItems().length, equalTo(2));
|
|
|
+ for (BulkItemResponse bulkItemResponse : bulkResponse) {
|
|
|
+ assertThat(bulkItemResponse.getIndex(), equalTo("test"));
|
|
|
+ }
|
|
|
+ assertThat(bulkResponse.getItems()[0].getResponse().getId(), equalTo("1"));
|
|
|
+ assertThat(bulkResponse.getItems()[0].getResponse().getVersion(), equalTo(1L));
|
|
|
+ assertThat(bulkResponse.getItems()[1].getResponse().getId(), equalTo("2"));
|
|
|
+ assertThat(bulkResponse.getItems()[1].getResponse().getVersion(), equalTo(1L));
|
|
|
+
|
|
|
+ GetResponse getResponse = client().prepareGet().setIndex("test").setId("1").execute()
|
|
|
+ .actionGet();
|
|
|
+ assertThat(getResponse.isExists(), equalTo(true));
|
|
|
+ assertThat(getResponse.getVersion(), equalTo(1L));
|
|
|
+ assertThat(((Number) getResponse.getSource().get("field")).longValue(), equalTo(2L));
|
|
|
+
|
|
|
+ getResponse = client().prepareGet().setIndex("test").setId("2").execute().actionGet();
|
|
|
+ assertThat(getResponse.isExists(), equalTo(true));
|
|
|
+ assertThat(getResponse.getVersion(), equalTo(1L));
|
|
|
+ assertThat(((Number) getResponse.getSource().get("field")).longValue(), equalTo(2L));
|
|
|
+ }
|
|
|
+
|
|
|
public void testBulkWithCAS() throws Exception {
|
|
|
createIndex("test", Settings.builder().put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1).build());
|
|
|
ensureGreen();
|