@@ -393,6 +393,100 @@ public void testBulkUpdateScriptUpsert() throws IOException {
393
393
assertEquals (1337 , getResponse .source ().getIntValue ());
394
394
}
395
395
396
+ public void testBulkUpdateScriptedUpsertUpdate () throws IOException {
397
+ final String id = "777" ;
398
+
399
+ final AppData appData = new AppData ();
400
+ appData .setIntValue (1337 );
401
+ appData .setMsg ("foo" );
402
+
403
+ assertEquals (Result .Created , javaClient ().index (b -> b .index ("index" ).id (id ).document (appData )).result ());
404
+
405
+ final BulkOperation op = new BulkOperation .Builder ().update (
406
+ o -> o .index ("index" )
407
+ .id (id )
408
+ .scriptedUpsert (true )
409
+ .upsert (Collections .emptyMap ())
410
+ .script (
411
+ Script .of (
412
+ s -> s .inline (
413
+ new InlineScript .Builder ().lang ("painless" )
414
+ .source ("ctx._source.intValue = ctx?._source?.intValue == null ? 7777 : 9999" )
415
+ .build ()
416
+ )
417
+ )
418
+ )
419
+ ).build ();
420
+
421
+ BulkRequest bulkRequest = new BulkRequest .Builder ().operations (op ).build ();
422
+ BulkResponse bulkResponse = javaClient ().bulk (bulkRequest );
423
+
424
+ assertTrue (bulkResponse .took () > 0 );
425
+ assertEquals (1 , bulkResponse .items ().size ());
426
+
427
+ final GetResponse <AppData > getResponse = javaClient ().get (b -> b .index ("index" ).id (id ), AppData .class );
428
+ assertTrue (getResponse .found ());
429
+ assertEquals (9999 , getResponse .source ().getIntValue ());
430
+ }
431
+
432
+ public void testBulkUpdateScriptedUpsertInsert () throws IOException {
433
+ final String id = "778" ;
434
+
435
+ final BulkOperation op = new BulkOperation .Builder ().update (
436
+ o -> o .index ("index" )
437
+ .id (id )
438
+ .scriptedUpsert (true )
439
+ .upsert (Collections .emptyMap ())
440
+ .script (
441
+ Script .of (
442
+ s -> s .inline (
443
+ new InlineScript .Builder ().lang ("painless" )
444
+ .source ("ctx._source.intValue = ctx?._source?.intValue == null ? 7777 : 9999" )
445
+ .build ()
446
+ )
447
+ )
448
+ )
449
+ ).build ();
450
+
451
+ BulkRequest bulkRequest = new BulkRequest .Builder ().operations (op ).build ();
452
+ BulkResponse bulkResponse = javaClient ().bulk (bulkRequest );
453
+
454
+ assertTrue (bulkResponse .took () > 0 );
455
+ assertEquals (1 , bulkResponse .items ().size ());
456
+
457
+ final GetResponse <AppData > getResponse = javaClient ().get (b -> b .index ("index" ).id (id ), AppData .class );
458
+ assertTrue (getResponse .found ());
459
+ assertEquals (7777 , getResponse .source ().getIntValue ());
460
+ }
461
+
462
+ public void testBulkUpdateDetectNoop () throws IOException {
463
+ final String id = "779" ;
464
+
465
+ final AppData appData = new AppData ();
466
+ appData .setIntValue (1337 );
467
+ appData .setMsg ("foo" );
468
+
469
+ assertEquals (Result .Created , javaClient ().index (b -> b .index ("index" ).id (id ).document (appData )).result ());
470
+
471
+ BulkOperation op = new BulkOperation .Builder ().update (o -> o .index ("index" ).id (id ).detectNoop (true ).document (appData )).build ();
472
+
473
+ BulkRequest bulkRequest = new BulkRequest .Builder ().operations (op ).build ();
474
+ BulkResponse bulkResponse = javaClient ().bulk (bulkRequest );
475
+
476
+ assertTrue (bulkResponse .took () > 0 );
477
+ assertEquals (1 , bulkResponse .items ().size ());
478
+ assertEquals (Result .NoOp .jsonValue (), bulkResponse .items ().get (0 ).result ());
479
+
480
+ op = new BulkOperation .Builder ().update (o -> o .index ("index" ).id (id ).detectNoop (false ).document (appData )).build ();
481
+
482
+ bulkRequest = new BulkRequest .Builder ().operations (op ).build ();
483
+ bulkResponse = javaClient ().bulk (bulkRequest );
484
+ assertTrue (bulkResponse .took () > 0 );
485
+ assertEquals (1 , bulkResponse .items ().size ());
486
+ assertEquals (Result .Updated .jsonValue (), bulkResponse .items ().get (0 ).result ());
487
+
488
+ }
489
+
396
490
public void testBulkUpdateUpsert () throws IOException {
397
491
final String id = "100" ;
398
492
0 commit comments