From 13e7d2e8e2eb580fb75fb7e56aa6e8a6b790d0c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cs=C3=B6r=C3=B6gi=20Gyula?= Date: Tue, 15 Oct 2019 08:41:19 +0200 Subject: [PATCH] DATAES-671 - Missing indicesOptions support for scrolling queries --- .../core/ElasticsearchRestTemplate.java | 4 ++ .../core/ElasticsearchTemplate.java | 4 ++ .../core/ElasticsearchTemplateTests.java | 38 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java index 41328fb15..c92c6e413 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java @@ -977,6 +977,10 @@ private SearchRequest prepareScroll(Query query, long scrollTimeInMillis, prepareSort(query, searchSourceBuilder, entity); } + if (query.getIndicesOptions() != null) { + request.indicesOptions(query.getIndicesOptions()); + } + if (query instanceof SearchQuery) { SearchQuery searchQuery = (SearchQuery) query; 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 ab219842d..7ecd7e4d1 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -826,6 +826,10 @@ private SearchRequestBuilder prepareScroll(Query query, long scrollTimeInMillis, prepareSort(query, requestBuilder, entity); } + if (query.getIndicesOptions() != null) { + requestBuilder.setIndicesOptions(query.getIndicesOptions()); + } + if (query instanceof SearchQuery) { SearchQuery searchQuery = (SearchQuery) query; 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 b141e935c..5ca0da090 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -1716,6 +1716,44 @@ public T mapSearchHit(SearchHit searchHit, Class type) { elasticsearchTemplate.clearScroll(scroll.getScrollId()); } + @Test // DATAES-671 + public void shouldPassIndicesOptionsForGivenSearchScrollQuery() { + + // given + long scrollTimeInMillis = 3000; + String documentId = randomNumeric(5); + SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message") + .version(System.currentTimeMillis()).build(); + + IndexQuery idxQuery = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(sampleEntity.getId()) + .withObject(sampleEntity).build(); + + elasticsearchTemplate.index(idxQuery); + elasticsearchTemplate.refresh(INDEX_1_NAME); + + // when + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) + .withIndices(INDEX_1_NAME, INDEX_2_NAME).withIndicesOptions(IndicesOptions.lenientExpandOpen()).build(); + + List entities = new ArrayList<>(); + + ScrolledPage scroll = elasticsearchTemplate.startScroll(scrollTimeInMillis, searchQuery, + SampleEntity.class, searchResultMapper); + + entities.addAll(scroll.getContent()); + + while (scroll.hasContent()) { + scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), scrollTimeInMillis, SampleEntity.class, + searchResultMapper); + + entities.addAll(scroll.getContent()); + } + + // then + assertThat(entities).isNotNull(); + assertThat(entities.size()).isGreaterThanOrEqualTo(1); + } + @Test // DATAES-479 public void shouldHonorTheHighlightBuilderOptions() {