|
@@ -279,6 +279,17 @@ public class RestHighLevelClient implements Closeable {
|
|
|
*
|
|
|
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
|
|
|
*/
|
|
|
+ public final BulkResponse bulk(BulkRequest bulkRequest, RequestOptions options) throws IOException {
|
|
|
+ return performRequestAndParseEntity(bulkRequest, RequestConverters::bulk, options, BulkResponse::fromXContent, emptySet());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Executes a bulk request using the Bulk API
|
|
|
+ *
|
|
|
+ * See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
|
|
|
+ * @deprecated Prefer {@link #bulk(BulkRequest, RequestOptions)}
|
|
|
+ */
|
|
|
+ @Deprecated
|
|
|
public final BulkResponse bulk(BulkRequest bulkRequest, Header... headers) throws IOException {
|
|
|
return performRequestAndParseEntity(bulkRequest, RequestConverters::bulk, BulkResponse::fromXContent, emptySet(), headers);
|
|
|
}
|
|
@@ -288,6 +299,17 @@ public class RestHighLevelClient implements Closeable {
|
|
|
*
|
|
|
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
|
|
|
*/
|
|
|
+ public final void bulkAsync(BulkRequest bulkRequest, RequestOptions options, ActionListener<BulkResponse> listener) {
|
|
|
+ performRequestAsyncAndParseEntity(bulkRequest, RequestConverters::bulk, options, BulkResponse::fromXContent, listener, emptySet());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Asynchronously executes a bulk request using the Bulk API
|
|
|
+ *
|
|
|
+ * See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html">Bulk API on elastic.co</a>
|
|
|
+ * @deprecated Prefer {@link #bulkAsync(BulkRequest, RequestOptions, ActionListener)}
|
|
|
+ */
|
|
|
+ @Deprecated
|
|
|
public final void bulkAsync(BulkRequest bulkRequest, ActionListener<BulkResponse> listener, Header... headers) {
|
|
|
performRequestAsyncAndParseEntity(bulkRequest, RequestConverters::bulk, BulkResponse::fromXContent, listener, emptySet(), headers);
|
|
|
}
|
|
@@ -584,6 +606,7 @@ public class RestHighLevelClient implements Closeable {
|
|
|
FieldCapabilitiesResponse::fromXContent, listener, emptySet(), headers);
|
|
|
}
|
|
|
|
|
|
+ @Deprecated
|
|
|
protected final <Req extends ActionRequest, Resp> Resp performRequestAndParseEntity(Req request,
|
|
|
CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
CheckedFunction<XContentParser, Resp, IOException> entityParser,
|
|
@@ -591,16 +614,34 @@ public class RestHighLevelClient implements Closeable {
|
|
|
return performRequest(request, requestConverter, (response) -> parseEntity(response.getEntity(), entityParser), ignores, headers);
|
|
|
}
|
|
|
|
|
|
+ protected final <Req extends ActionRequest, Resp> Resp performRequestAndParseEntity(Req request,
|
|
|
+ CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
+ RequestOptions options,
|
|
|
+ CheckedFunction<XContentParser, Resp, IOException> entityParser,
|
|
|
+ Set<Integer> ignores) throws IOException {
|
|
|
+ return performRequest(request, requestConverter, options,
|
|
|
+ response -> parseEntity(response.getEntity(), entityParser), ignores);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Deprecated
|
|
|
protected final <Req extends ActionRequest, Resp> Resp performRequest(Req request,
|
|
|
CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
CheckedFunction<Response, Resp, IOException> responseConverter,
|
|
|
Set<Integer> ignores, Header... headers) throws IOException {
|
|
|
+ return performRequest(request, requestConverter, optionsForHeaders(headers), responseConverter, ignores);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected final <Req extends ActionRequest, Resp> Resp performRequest(Req request,
|
|
|
+ CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
+ RequestOptions options,
|
|
|
+ CheckedFunction<Response, Resp, IOException> responseConverter,
|
|
|
+ Set<Integer> ignores) throws IOException {
|
|
|
ActionRequestValidationException validationException = request.validate();
|
|
|
if (validationException != null) {
|
|
|
throw validationException;
|
|
|
}
|
|
|
Request req = requestConverter.apply(request);
|
|
|
- addHeaders(req, headers);
|
|
|
+ req.setOptions(options);
|
|
|
Response response;
|
|
|
try {
|
|
|
response = client.performRequest(req);
|
|
@@ -626,6 +667,7 @@ public class RestHighLevelClient implements Closeable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Deprecated
|
|
|
protected final <Req extends ActionRequest, Resp> void performRequestAsyncAndParseEntity(Req request,
|
|
|
CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
CheckedFunction<XContentParser, Resp, IOException> entityParser,
|
|
@@ -634,10 +676,28 @@ public class RestHighLevelClient implements Closeable {
|
|
|
listener, ignores, headers);
|
|
|
}
|
|
|
|
|
|
+ protected final <Req extends ActionRequest, Resp> void performRequestAsyncAndParseEntity(Req request,
|
|
|
+ CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
+ RequestOptions options,
|
|
|
+ CheckedFunction<XContentParser, Resp, IOException> entityParser,
|
|
|
+ ActionListener<Resp> listener, Set<Integer> ignores) {
|
|
|
+ performRequestAsync(request, requestConverter, options,
|
|
|
+ response -> parseEntity(response.getEntity(), entityParser), listener, ignores);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Deprecated
|
|
|
protected final <Req extends ActionRequest, Resp> void performRequestAsync(Req request,
|
|
|
CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
CheckedFunction<Response, Resp, IOException> responseConverter,
|
|
|
ActionListener<Resp> listener, Set<Integer> ignores, Header... headers) {
|
|
|
+ performRequestAsync(request, requestConverter, optionsForHeaders(headers), responseConverter, listener, ignores);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected final <Req extends ActionRequest, Resp> void performRequestAsync(Req request,
|
|
|
+ CheckedFunction<Req, Request, IOException> requestConverter,
|
|
|
+ RequestOptions options,
|
|
|
+ CheckedFunction<Response, Resp, IOException> responseConverter,
|
|
|
+ ActionListener<Resp> listener, Set<Integer> ignores) {
|
|
|
ActionRequestValidationException validationException = request.validate();
|
|
|
if (validationException != null) {
|
|
|
listener.onFailure(validationException);
|
|
@@ -650,19 +710,12 @@ public class RestHighLevelClient implements Closeable {
|
|
|
listener.onFailure(e);
|
|
|
return;
|
|
|
}
|
|
|
- addHeaders(req, headers);
|
|
|
+ req.setOptions(options);
|
|
|
|
|
|
ResponseListener responseListener = wrapResponseListener(responseConverter, listener, ignores);
|
|
|
client.performRequestAsync(req, responseListener);
|
|
|
}
|
|
|
|
|
|
- private static void addHeaders(Request request, Header... headers) {
|
|
|
- Objects.requireNonNull(headers, "headers cannot be null");
|
|
|
- for (Header header : headers) {
|
|
|
- request.addHeader(header.getName(), header.getValue());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
final <Resp> ResponseListener wrapResponseListener(CheckedFunction<Response, Resp, IOException> responseConverter,
|
|
|
ActionListener<Resp> actionListener, Set<Integer> ignores) {
|
|
|
return new ResponseListener() {
|
|
@@ -746,6 +799,15 @@ public class RestHighLevelClient implements Closeable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private static RequestOptions optionsForHeaders(Header[] headers) {
|
|
|
+ RequestOptions.Builder options = RequestOptions.DEFAULT.toBuilder();
|
|
|
+ for (Header header : headers) {
|
|
|
+ Objects.requireNonNull(header, "header cannot be null");
|
|
|
+ options.addHeader(header.getName(), header.getValue());
|
|
|
+ }
|
|
|
+ return options.build();
|
|
|
+ }
|
|
|
+
|
|
|
static boolean convertExistsResponse(Response response) {
|
|
|
return response.getStatusLine().getStatusCode() == 200;
|
|
|
}
|