@@ -279,6 +279,17 @@ public final TasksClient tasks() {
279
279
*
280
280
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
281
281
*/
282
+ public final BulkResponse bulk (BulkRequest bulkRequest , RequestOptions options ) throws IOException {
283
+ return performRequestAndParseEntity (bulkRequest , RequestConverters ::bulk , options , BulkResponse ::fromXContent , emptySet ());
284
+ }
285
+
286
+ /**
287
+ * Executes a bulk request using the Bulk API
288
+ *
289
+ * See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
290
+ * @deprecated Prefer {@link #bulk(BulkRequest, RequestOptions)}
291
+ */
292
+ @ Deprecated
282
293
public final BulkResponse bulk (BulkRequest bulkRequest , Header ... headers ) throws IOException {
283
294
return performRequestAndParseEntity (bulkRequest , RequestConverters ::bulk , BulkResponse ::fromXContent , emptySet (), headers );
284
295
}
@@ -288,6 +299,17 @@ public final BulkResponse bulk(BulkRequest bulkRequest, Header... headers) throw
288
299
*
289
300
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
290
301
*/
302
+ public final void bulkAsync (BulkRequest bulkRequest , RequestOptions options , ActionListener <BulkResponse > listener ) {
303
+ performRequestAsyncAndParseEntity (bulkRequest , RequestConverters ::bulk , options , BulkResponse ::fromXContent , listener , emptySet ());
304
+ }
305
+
306
+ /**
307
+ * Asynchronously executes a bulk request using the Bulk API
308
+ *
309
+ * See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
310
+ * @deprecated Prefer {@link #bulkAsync(BulkRequest, RequestOptions, ActionListener)}
311
+ */
312
+ @ Deprecated
291
313
public final void bulkAsync (BulkRequest bulkRequest , ActionListener <BulkResponse > listener , Header ... headers ) {
292
314
performRequestAsyncAndParseEntity (bulkRequest , RequestConverters ::bulk , BulkResponse ::fromXContent , listener , emptySet (), headers );
293
315
}
@@ -584,23 +606,42 @@ public final void fieldCapsAsync(FieldCapabilitiesRequest fieldCapabilitiesReque
584
606
FieldCapabilitiesResponse ::fromXContent , listener , emptySet (), headers );
585
607
}
586
608
609
+ @ Deprecated
587
610
protected final <Req extends ActionRequest , Resp > Resp performRequestAndParseEntity (Req request ,
588
611
CheckedFunction <Req , Request , IOException > requestConverter ,
589
612
CheckedFunction <XContentParser , Resp , IOException > entityParser ,
590
613
Set <Integer > ignores , Header ... headers ) throws IOException {
591
614
return performRequest (request , requestConverter , (response ) -> parseEntity (response .getEntity (), entityParser ), ignores , headers );
592
615
}
593
616
617
+ protected final <Req extends ActionRequest , Resp > Resp performRequestAndParseEntity (Req request ,
618
+ CheckedFunction <Req , Request , IOException > requestConverter ,
619
+ RequestOptions options ,
620
+ CheckedFunction <XContentParser , Resp , IOException > entityParser ,
621
+ Set <Integer > ignores ) throws IOException {
622
+ return performRequest (request , requestConverter , options ,
623
+ response -> parseEntity (response .getEntity (), entityParser ), ignores );
624
+ }
625
+
626
+ @ Deprecated
594
627
protected final <Req extends ActionRequest , Resp > Resp performRequest (Req request ,
595
628
CheckedFunction <Req , Request , IOException > requestConverter ,
596
629
CheckedFunction <Response , Resp , IOException > responseConverter ,
597
630
Set <Integer > ignores , Header ... headers ) throws IOException {
631
+ return performRequest (request , requestConverter , optionsForHeaders (headers ), responseConverter , ignores );
632
+ }
633
+
634
+ protected final <Req extends ActionRequest , Resp > Resp performRequest (Req request ,
635
+ CheckedFunction <Req , Request , IOException > requestConverter ,
636
+ RequestOptions options ,
637
+ CheckedFunction <Response , Resp , IOException > responseConverter ,
638
+ Set <Integer > ignores ) throws IOException {
598
639
ActionRequestValidationException validationException = request .validate ();
599
640
if (validationException != null ) {
600
641
throw validationException ;
601
642
}
602
643
Request req = requestConverter .apply (request );
603
- addHeaders ( req , headers );
644
+ req . setOptions ( options );
604
645
Response response ;
605
646
try {
606
647
response = client .performRequest (req );
@@ -626,6 +667,7 @@ protected final <Req extends ActionRequest, Resp> Resp performRequest(Req reques
626
667
}
627
668
}
628
669
670
+ @ Deprecated
629
671
protected final <Req extends ActionRequest , Resp > void performRequestAsyncAndParseEntity (Req request ,
630
672
CheckedFunction <Req , Request , IOException > requestConverter ,
631
673
CheckedFunction <XContentParser , Resp , IOException > entityParser ,
@@ -634,10 +676,28 @@ protected final <Req extends ActionRequest, Resp> void performRequestAsyncAndPar
634
676
listener , ignores , headers );
635
677
}
636
678
679
+ protected final <Req extends ActionRequest , Resp > void performRequestAsyncAndParseEntity (Req request ,
680
+ CheckedFunction <Req , Request , IOException > requestConverter ,
681
+ RequestOptions options ,
682
+ CheckedFunction <XContentParser , Resp , IOException > entityParser ,
683
+ ActionListener <Resp > listener , Set <Integer > ignores ) {
684
+ performRequestAsync (request , requestConverter , options ,
685
+ response -> parseEntity (response .getEntity (), entityParser ), listener , ignores );
686
+ }
687
+
688
+ @ Deprecated
637
689
protected final <Req extends ActionRequest , Resp > void performRequestAsync (Req request ,
638
690
CheckedFunction <Req , Request , IOException > requestConverter ,
639
691
CheckedFunction <Response , Resp , IOException > responseConverter ,
640
692
ActionListener <Resp > listener , Set <Integer > ignores , Header ... headers ) {
693
+ performRequestAsync (request , requestConverter , optionsForHeaders (headers ), responseConverter , listener , ignores );
694
+ }
695
+
696
+ protected final <Req extends ActionRequest , Resp > void performRequestAsync (Req request ,
697
+ CheckedFunction <Req , Request , IOException > requestConverter ,
698
+ RequestOptions options ,
699
+ CheckedFunction <Response , Resp , IOException > responseConverter ,
700
+ ActionListener <Resp > listener , Set <Integer > ignores ) {
641
701
ActionRequestValidationException validationException = request .validate ();
642
702
if (validationException != null ) {
643
703
listener .onFailure (validationException );
@@ -650,19 +710,12 @@ protected final <Req extends ActionRequest, Resp> void performRequestAsync(Req r
650
710
listener .onFailure (e );
651
711
return ;
652
712
}
653
- addHeaders ( req , headers );
713
+ req . setOptions ( options );
654
714
655
715
ResponseListener responseListener = wrapResponseListener (responseConverter , listener , ignores );
656
716
client .performRequestAsync (req , responseListener );
657
717
}
658
718
659
- private static void addHeaders (Request request , Header ... headers ) {
660
- Objects .requireNonNull (headers , "headers cannot be null" );
661
- for (Header header : headers ) {
662
- request .addHeader (header .getName (), header .getValue ());
663
- }
664
- }
665
-
666
719
final <Resp > ResponseListener wrapResponseListener (CheckedFunction <Response , Resp , IOException > responseConverter ,
667
720
ActionListener <Resp > actionListener , Set <Integer > ignores ) {
668
721
return new ResponseListener () {
@@ -746,6 +799,15 @@ protected final <Resp> Resp parseEntity(final HttpEntity entity,
746
799
}
747
800
}
748
801
802
+ private static RequestOptions optionsForHeaders (Header [] headers ) {
803
+ RequestOptions .Builder options = RequestOptions .DEFAULT .toBuilder ();
804
+ for (Header header : headers ) {
805
+ Objects .requireNonNull (header , "header cannot be null" );
806
+ options .addHeader (header .getName (), header .getValue ());
807
+ }
808
+ return options .build ();
809
+ }
810
+
749
811
static boolean convertExistsResponse (Response response ) {
750
812
return response .getStatusLine ().getStatusCode () == 200 ;
751
813
}
0 commit comments