@@ -199,6 +199,43 @@ public void testBulkUpdateSimple() throws Exception {
199
199
assertThat (((Number ) getResponse .getSource ().get ("field" )).longValue (), equalTo (4L ));
200
200
}
201
201
202
+ public void testBulkUpdateWithScriptedUpsertAndDynamicMappingUpdate () throws Exception {
203
+ assertAcked (prepareCreate ("test" ).addAlias (new Alias ("alias" )));
204
+ ensureGreen ();
205
+
206
+ final Script script = new Script (ScriptType .INLINE , CustomScriptPlugin .NAME , "ctx._source.field += 1" , Collections .emptyMap ());
207
+
208
+ BulkResponse bulkResponse = client ().prepareBulk ()
209
+ .add (client ().prepareUpdate ().setIndex (indexOrAlias ()).setId ("1" )
210
+ .setScript (script ).setScriptedUpsert (true ).setUpsert ("field" , 1 ))
211
+ .add (client ().prepareUpdate ().setIndex (indexOrAlias ()).setId ("2" )
212
+ .setScript (script ).setScriptedUpsert (true ).setUpsert ("field" , 1 ))
213
+ .get ();
214
+
215
+ logger .info (bulkResponse .buildFailureMessage ());
216
+
217
+ assertThat (bulkResponse .hasFailures (), equalTo (false ));
218
+ assertThat (bulkResponse .getItems ().length , equalTo (2 ));
219
+ for (BulkItemResponse bulkItemResponse : bulkResponse ) {
220
+ assertThat (bulkItemResponse .getIndex (), equalTo ("test" ));
221
+ }
222
+ assertThat (bulkResponse .getItems ()[0 ].getResponse ().getId (), equalTo ("1" ));
223
+ assertThat (bulkResponse .getItems ()[0 ].getResponse ().getVersion (), equalTo (1L ));
224
+ assertThat (bulkResponse .getItems ()[1 ].getResponse ().getId (), equalTo ("2" ));
225
+ assertThat (bulkResponse .getItems ()[1 ].getResponse ().getVersion (), equalTo (1L ));
226
+
227
+ GetResponse getResponse = client ().prepareGet ().setIndex ("test" ).setId ("1" ).execute ()
228
+ .actionGet ();
229
+ assertThat (getResponse .isExists (), equalTo (true ));
230
+ assertThat (getResponse .getVersion (), equalTo (1L ));
231
+ assertThat (((Number ) getResponse .getSource ().get ("field" )).longValue (), equalTo (2L ));
232
+
233
+ getResponse = client ().prepareGet ().setIndex ("test" ).setId ("2" ).execute ().actionGet ();
234
+ assertThat (getResponse .isExists (), equalTo (true ));
235
+ assertThat (getResponse .getVersion (), equalTo (1L ));
236
+ assertThat (((Number ) getResponse .getSource ().get ("field" )).longValue (), equalTo (2L ));
237
+ }
238
+
202
239
public void testBulkWithCAS () throws Exception {
203
240
createIndex ("test" , Settings .builder ().put (IndexMetaData .SETTING_NUMBER_OF_SHARDS , 1 ).build ());
204
241
ensureGreen ();
0 commit comments