diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java index f367e6205..86e8c0671 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java @@ -547,6 +547,14 @@ public interface ElasticsearchOperations { */ Page scroll(String scrollId, long scrollTimeInMillis, SearchResultMapper mapper); + /** + * Clears the search contexts associated with specified scroll ids. + * + * @param scrollId + * + */ + void clearScroll(String scrollId); + /** * more like this query to search for documents that are "like" a specific document. * diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 1720cdf96..a2b7e1fdb 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -685,6 +685,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati bulkRequestBuilder.execute().actionGet(); } + clearScroll(scrollId); } @Override @@ -791,6 +792,11 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati return mapper.mapResults(response, null, null); } + @Override + public void clearScroll(String scrollId) { + client.prepareClearScroll().addScrollId(scrollId).execute().actionGet(); + } + @Override public Page moreLikeThis(MoreLikeThisQuery query, Class clazz) { diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java index db5ab0bf8..b5fec45e9 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -709,6 +709,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -735,6 +736,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -784,6 +786,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -835,6 +838,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -884,6 +888,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -928,6 +933,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -957,6 +963,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); } @@ -986,6 +993,7 @@ public class ElasticsearchTemplateTests { hasRecords = false; } } + elasticsearchTemplate.clearScroll(scrollId); assertThat(sampleEntities.size(), is(equalTo(30))); }