diff --git a/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java b/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java index 8fbf4bbb80ebb..dcf047911372d 100644 --- a/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java @@ -23,6 +23,8 @@ import org.elasticsearch.action.percolate.PercolateRequest; import org.elasticsearch.action.percolate.PercolateResponse; import org.elasticsearch.client.Client; +import org.elasticsearch.common.bytes.BytesArray; +import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; @@ -52,7 +54,18 @@ public RestPercolateAction(Settings settings, Client client, RestController cont public void handleRequest(final RestRequest request, final RestChannel channel) { PercolateRequest percolateRequest = new PercolateRequest(request.param("index"), request.param("type")); percolateRequest.listenerThreaded(false); - percolateRequest.source(request.content(), request.contentUnsafe()); + + BytesReference content = null; + if (request.hasContent()) { + content = request.content(); + } else { + String source = request.param("source"); + if (source != null) { + content = new BytesArray(source); + } + } + + percolateRequest.source(content, request.contentUnsafe()); // we just send a response, no need to fork percolateRequest.listenerThreaded(false);