Skip to content

Commit a451f8d

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

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
@@ -960,6 +960,10 @@ private SearchRequest prepareScroll(Query query, long scrollTimeInMillis,
960960
prepareSort(query, searchSourceBuilder, entity);
961961
}
962962

963+
if (query.getIndicesOptions() != null) {
964+
request.indicesOptions(query.getIndicesOptions());
965+
}
966+
963967
if (query instanceof SearchQuery) {
964968
SearchQuery searchQuery = (SearchQuery) query;
965969

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

+4
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,10 @@ private SearchRequestBuilder prepareScroll(Query query, long scrollTimeInMillis,
810810
prepareSort(query, requestBuilder, entity);
811811
}
812812

813+
if (query.getIndicesOptions() != null) {
814+
requestBuilder.setIndicesOptions(query.getIndicesOptions());
815+
}
816+
813817
if (query instanceof SearchQuery) {
814818
SearchQuery searchQuery = (SearchQuery) query;
815819

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

+38
Original file line numberDiff line numberDiff line change
@@ -1709,6 +1709,44 @@ public <T> T mapSearchHit(SearchHit searchHit, Class<T> type) {
17091709
elasticsearchTemplate.clearScroll(scroll.getScrollId());
17101710
}
17111711

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

0 commit comments

Comments
 (0)