From b4001295979afc31215c4ae970d87fa49be1e5fa Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Tue, 8 Apr 2014 20:41:32 +0700 Subject: [PATCH] The clear scroll apis now optionally accepts a scroll_id in it body. Closes #5726 --- rest-api-spec/api/clear_scroll.json | 4 ++- rest-api-spec/test/scroll/11_clear.yaml | 35 +++++++++++++++++++ .../action/search/RestClearScrollAction.java | 4 +++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 rest-api-spec/test/scroll/11_clear.yaml diff --git a/rest-api-spec/api/clear_scroll.json b/rest-api-spec/api/clear_scroll.json index 1dd12740057..144cc054bc9 100644 --- a/rest-api-spec/api/clear_scroll.json +++ b/rest-api-spec/api/clear_scroll.json @@ -14,6 +14,8 @@ }, "params": {} }, - "body": null + "body": { + "description": "A comma-separated list of scroll IDs to clear if none was specified via the scroll_id parameter" + } } } diff --git a/rest-api-spec/test/scroll/11_clear.yaml b/rest-api-spec/test/scroll/11_clear.yaml new file mode 100644 index 00000000000..12cf760b418 --- /dev/null +++ b/rest-api-spec/test/scroll/11_clear.yaml @@ -0,0 +1,35 @@ +--- +"Clear scroll": + - do: + indices.create: + index: test_scroll + - do: + index: + index: test_scroll + type: test + id: 42 + body: { foo: bar } + + - do: + indices.refresh: {} + + - do: + search: + index: test_scroll + search_type: scan + scroll: 1m + body: + query: + match_all: {} + + - set: {_scroll_id: scroll_id1} + + - do: + clear_scroll: + scroll_id: $scroll_id1 + + - do: + scroll: + scroll_id: $scroll_id1 + + - length: {hits.hits: 0} diff --git a/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java b/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java index b81c81cb5fc..269b300a418 100644 --- a/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java +++ b/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java @@ -27,6 +27,7 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.*; +import org.elasticsearch.rest.action.support.RestActions; import org.elasticsearch.rest.action.support.RestBuilderListener; import java.util.Arrays; @@ -49,6 +50,9 @@ public class RestClearScrollAction extends BaseRestHandler { @Override public void handleRequest(final RestRequest request, final RestChannel channel) { String scrollIds = request.param("scroll_id"); + if (scrollIds == null) { + scrollIds = RestActions.getRestContent(request).toUtf8(); + } ClearScrollRequest clearRequest = new ClearScrollRequest(); clearRequest.setScrollIds(Arrays.asList(splitScrollIds(scrollIds)));