@@ -732,13 +732,15 @@ public <T> Mono<SearchPage<T>> searchForPage(Query query, Class<?> entityType, C
732
732
private Flux <SearchDocument > doFind (Query query , Class <?> clazz , IndexCoordinates index ) {
733
733
734
734
return Flux .defer (() -> {
735
+
735
736
SearchRequest request = requestFactory .searchRequest (query , clazz , index );
736
- request = prepareSearchRequest (request );
737
+ boolean useScroll = !(query .getPageable ().isPaged () || query .isLimiting ());
738
+ request = prepareSearchRequest (request , useScroll );
737
739
738
- if (query .getPageable ().isPaged () || query .isLimiting ()) {
739
- return doFind (request );
740
- } else {
740
+ if (useScroll ) {
741
741
return doScroll (request );
742
+ } else {
743
+ return doFind (request );
742
744
}
743
745
});
744
746
}
@@ -747,7 +749,7 @@ private Mono<SearchDocumentResponse> doFindForResponse(Query query, Class<?> cla
747
749
748
750
return Mono .defer (() -> {
749
751
SearchRequest request = requestFactory .searchRequest (query , clazz , index );
750
- request = prepareSearchRequest (request );
752
+ request = prepareSearchRequest (request , false );
751
753
return doFindForResponse (request );
752
754
});
753
755
}
@@ -782,7 +784,7 @@ private Flux<Suggest> doSuggest(SuggestBuilder suggestion, IndexCoordinates inde
782
784
private Flux <Aggregation > doAggregate (Query query , Class <?> entityType , IndexCoordinates index ) {
783
785
return Flux .defer (() -> {
784
786
SearchRequest request = requestFactory .searchRequest (query , entityType , index );
785
- request = prepareSearchRequest (request );
787
+ request = prepareSearchRequest (request , false );
786
788
return doAggregate (request );
787
789
});
788
790
}
@@ -801,7 +803,7 @@ private Mono<Long> doCount(Query query, Class<?> entityType, IndexCoordinates in
801
803
return Mono .defer (() -> {
802
804
803
805
SearchRequest request = requestFactory .searchRequest (query , entityType , index );
804
- request = prepareSearchRequest (request );
806
+ request = prepareSearchRequest (request , false );
805
807
return doCount (request );
806
808
});
807
809
}
@@ -890,15 +892,21 @@ protected Flux<SearchDocument> doScroll(SearchRequest request) {
890
892
* {@link SearchRequest#indicesOptions(IndicesOptions) indices options} if applicable.
891
893
*
892
894
* @param request the generated {@link SearchRequest}.
895
+ * @param useScroll
893
896
* @return never {@literal null}.
894
897
*/
895
- protected SearchRequest prepareSearchRequest (SearchRequest request ) {
898
+ protected SearchRequest prepareSearchRequest (SearchRequest request , boolean useScroll ) {
896
899
897
- if (indicesOptions = = null ) {
898
- return request ;
900
+ if (indicesOptions ! = null ) {
901
+ request = request . indicesOptions ( indicesOptions ) ;
899
902
}
900
903
901
- return request .indicesOptions (indicesOptions );
904
+ // request_cache is not allowed on scroll requests.
905
+ if (useScroll ) {
906
+ request = request .requestCache (null );
907
+ }
908
+ return request ;
909
+
902
910
}
903
911
904
912
// endregion
0 commit comments