Skip to content

Commit 4682636

Browse files
sirgyulasothawo
authored andcommitted
DATAES-671 - Missing indicesOptions support for scrolling queries.
Original PR: #332
1 parent ba76986 commit 4682636

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java

+4
Original file line numberDiff line numberDiff line change
@@ -977,6 +977,10 @@ private SearchRequest prepareScroll(Query query, long scrollTimeInMillis,
977977
prepareSort(query, searchSourceBuilder, entity);
978978
}
979979

980+
if (query.getIndicesOptions() != null) {
981+
request.indicesOptions(query.getIndicesOptions());
982+
}
983+
980984
if (query instanceof SearchQuery) {
981985
SearchQuery searchQuery = (SearchQuery) query;
982986

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

+4
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,10 @@ private SearchRequestBuilder prepareScroll(Query query, long scrollTimeInMillis,
826826
prepareSort(query, requestBuilder, entity);
827827
}
828828

829+
if (query.getIndicesOptions() != null) {
830+
requestBuilder.setIndicesOptions(query.getIndicesOptions());
831+
}
832+
829833
if (query instanceof SearchQuery) {
830834
SearchQuery searchQuery = (SearchQuery) query;
831835

src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java

+38
Original file line numberDiff line numberDiff line change
@@ -1716,6 +1716,44 @@ public <T> T mapSearchHit(SearchHit searchHit, Class<T> type) {
17161716
elasticsearchTemplate.clearScroll(scroll.getScrollId());
17171717
}
17181718

1719+
@Test // DATAES-671
1720+
public void shouldPassIndicesOptionsForGivenSearchScrollQuery() {
1721+
1722+
// given
1723+
long scrollTimeInMillis = 3000;
1724+
String documentId = randomNumeric(5);
1725+
SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
1726+
.version(System.currentTimeMillis()).build();
1727+
1728+
IndexQuery idxQuery = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(sampleEntity.getId())
1729+
.withObject(sampleEntity).build();
1730+
1731+
elasticsearchTemplate.index(idxQuery);
1732+
elasticsearchTemplate.refresh(INDEX_1_NAME);
1733+
1734+
// when
1735+
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
1736+
.withIndices(INDEX_1_NAME, INDEX_2_NAME).withIndicesOptions(IndicesOptions.lenientExpandOpen()).build();
1737+
1738+
List<SampleEntity> entities = new ArrayList<>();
1739+
1740+
ScrolledPage<SampleEntity> scroll = elasticsearchTemplate.startScroll(scrollTimeInMillis, searchQuery,
1741+
SampleEntity.class, searchResultMapper);
1742+
1743+
entities.addAll(scroll.getContent());
1744+
1745+
while (scroll.hasContent()) {
1746+
scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), scrollTimeInMillis, SampleEntity.class,
1747+
searchResultMapper);
1748+
1749+
entities.addAll(scroll.getContent());
1750+
}
1751+
1752+
// then
1753+
assertThat(entities).isNotNull();
1754+
assertThat(entities.size()).isGreaterThanOrEqualTo(1);
1755+
}
1756+
17191757
@Test // DATAES-479
17201758
public void shouldHonorTheHighlightBuilderOptions() {
17211759

0 commit comments

Comments
 (0)