@@ -337,8 +337,7 @@ public <T> FacetedPage<T> queryForPage(StringQuery query, Class<T> clazz, Search
337
337
@ Override
338
338
public <T > CloseableIterator <T > stream (CriteriaQuery query , Class <T > clazz ) {
339
339
final long scrollTimeInMillis = TimeValue .timeValueMinutes (1 ).millis ();
340
- setPersistentEntityIndexAndType (query , clazz );
341
- final String initScrollId = scan (query , scrollTimeInMillis , false );
340
+ final String initScrollId = scan (query , scrollTimeInMillis , false , clazz );
342
341
return doStream (initScrollId , scrollTimeInMillis , clazz , resultsMapper );
343
342
}
344
343
@@ -350,8 +349,7 @@ public <T> CloseableIterator<T> stream(SearchQuery query, Class<T> clazz) {
350
349
@ Override
351
350
public <T > CloseableIterator <T > stream (SearchQuery query , final Class <T > clazz , final SearchResultMapper mapper ) {
352
351
final long scrollTimeInMillis = TimeValue .timeValueMinutes (1 ).millis ();
353
- setPersistentEntityIndexAndType (query , clazz );
354
- final String initScrollId = scan (query , scrollTimeInMillis , false );
352
+ final String initScrollId = scan (query , scrollTimeInMillis , false , clazz );
355
353
return doStream (initScrollId , scrollTimeInMillis , clazz , mapper );
356
354
}
357
355
@@ -675,13 +673,52 @@ public <T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz) {
675
673
676
674
@ Override
677
675
public String scan (CriteriaQuery criteriaQuery , long scrollTimeInMillis , boolean noFields ) {
676
+ return doScan (prepareScan (criteriaQuery , scrollTimeInMillis , noFields ), criteriaQuery );
677
+ }
678
+
679
+ @ Override
680
+ public <T > String scan (CriteriaQuery criteriaQuery , long scrollTimeInMillis , boolean noFields , Class <T > clazz ) {
681
+ return doScan (prepareScan (criteriaQuery , scrollTimeInMillis , noFields , clazz ), criteriaQuery );
682
+ }
683
+
684
+ @ Override
685
+ public String scan (SearchQuery searchQuery , long scrollTimeInMillis , boolean noFields ) {
686
+ return doScan (prepareScan (searchQuery , scrollTimeInMillis , noFields ), searchQuery );
687
+ }
688
+
689
+ @ Override
690
+ public <T > String scan (SearchQuery searchQuery , long scrollTimeInMillis , boolean noFields , Class <T > clazz ) {
691
+ return doScan (prepareScan (searchQuery , scrollTimeInMillis , noFields , clazz ), searchQuery );
692
+ }
693
+
694
+ private <T > SearchRequestBuilder prepareScan (Query query , long scrollTimeInMillis , boolean noFields , Class <T > clazz ) {
695
+ setPersistentEntityIndexAndType (query , clazz );
696
+ return prepareScan (query , scrollTimeInMillis , noFields );
697
+ }
698
+
699
+ private SearchRequestBuilder prepareScan (Query query , long scrollTimeInMillis , boolean noFields ) {
700
+ SearchRequestBuilder requestBuilder = client .prepareSearch (toArray (query .getIndices ())).setSearchType (SCAN )
701
+ .setTypes (toArray (query .getTypes ()))
702
+ .setScroll (TimeValue .timeValueMillis (scrollTimeInMillis )).setFrom (0 )
703
+ .setSize (query .getPageable ().getPageSize ());
704
+
705
+ if (isNotEmpty (query .getFields ())) {
706
+ requestBuilder .addFields (toArray (query .getFields ()));
707
+ }
708
+
709
+ if (noFields ) {
710
+ requestBuilder .setNoFields ();
711
+ }
712
+ return requestBuilder ;
713
+ }
714
+
715
+ private String doScan (SearchRequestBuilder requestBuilder , CriteriaQuery criteriaQuery ) {
678
716
Assert .notNull (criteriaQuery .getIndices (), "No index defined for Query" );
679
717
Assert .notNull (criteriaQuery .getTypes (), "No type define for Query" );
680
718
Assert .notNull (criteriaQuery .getPageable (), "Query.pageable is required for scan & scroll" );
681
719
682
720
QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor ().createQueryFromCriteria (criteriaQuery .getCriteria ());
683
721
FilterBuilder elasticsearchFilter = new CriteriaFilterProcessor ().createFilterFromCriteria (criteriaQuery .getCriteria ());
684
- SearchRequestBuilder requestBuilder = prepareScan (criteriaQuery , scrollTimeInMillis , noFields );
685
722
686
723
if (elasticsearchQuery != null ) {
687
724
requestBuilder .setQuery (elasticsearchQuery );
@@ -696,37 +733,18 @@ public String scan(CriteriaQuery criteriaQuery, long scrollTimeInMillis, boolean
696
733
return getSearchResponse (requestBuilder .execute ()).getScrollId ();
697
734
}
698
735
699
- @ Override
700
- public String scan (SearchQuery searchQuery , long scrollTimeInMillis , boolean noFields ) {
736
+ private String doScan (SearchRequestBuilder requestBuilder , SearchQuery searchQuery ) {
701
737
Assert .notNull (searchQuery .getIndices (), "No index defined for Query" );
702
738
Assert .notNull (searchQuery .getTypes (), "No type define for Query" );
703
739
Assert .notNull (searchQuery .getPageable (), "Query.pageable is required for scan & scroll" );
704
740
705
- SearchRequestBuilder requestBuilder = prepareScan (searchQuery , scrollTimeInMillis , noFields );
706
-
707
741
if (searchQuery .getFilter () != null ) {
708
742
requestBuilder .setPostFilter (searchQuery .getFilter ());
709
743
}
710
744
711
745
return getSearchResponse (requestBuilder .setQuery (searchQuery .getQuery ()).execute ()).getScrollId ();
712
746
}
713
747
714
- private SearchRequestBuilder prepareScan (Query query , long scrollTimeInMillis , boolean noFields ) {
715
- SearchRequestBuilder requestBuilder = client .prepareSearch (toArray (query .getIndices ())).setSearchType (SCAN )
716
- .setTypes (toArray (query .getTypes ()))
717
- .setScroll (TimeValue .timeValueMillis (scrollTimeInMillis )).setFrom (0 )
718
- .setSize (query .getPageable ().getPageSize ());
719
-
720
- if (isNotEmpty (query .getFields ())) {
721
- requestBuilder .addFields (toArray (query .getFields ()));
722
- }
723
-
724
- if (noFields ) {
725
- requestBuilder .setNoFields ();
726
- }
727
- return requestBuilder ;
728
- }
729
-
730
748
@ Override
731
749
public <T > Page <T > scroll (String scrollId , long scrollTimeInMillis , Class <T > clazz ) {
732
750
SearchResponse response = getSearchResponse (client .prepareSearchScroll (scrollId )
0 commit comments