@@ -647,8 +647,39 @@ public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() {
647
647
assertThat (sampleEntities .getContent (), hasItem (sampleEntity ));
648
648
}
649
649
650
+ /*
651
+ DATAES-167
652
+ */
653
+ @ Test
654
+ public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery () {
655
+ //given
656
+ List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
657
+ // when
658
+ elasticsearchTemplate .bulkIndex (entities );
659
+ elasticsearchTemplate .refresh (SampleEntity .class , true );
660
+ // then
661
+
662
+ CriteriaQuery criteriaQuery = new CriteriaQuery (new Criteria ());
663
+ criteriaQuery .addIndices (INDEX_NAME );
664
+ criteriaQuery .addTypes (TYPE_NAME );
665
+ criteriaQuery .setPageable (new PageRequest (0 , 10 ));
666
+
667
+ String scrollId = elasticsearchTemplate .scan (criteriaQuery , 1000 , false );
668
+ List <SampleEntity > sampleEntities = new ArrayList <SampleEntity >();
669
+ boolean hasRecords = true ;
670
+ while (hasRecords ) {
671
+ Page <SampleEntity > page = elasticsearchTemplate .scroll (scrollId , 5000L , SampleEntity .class );
672
+ if (page .hasContent ()) {
673
+ sampleEntities .addAll (page .getContent ());
674
+ } else {
675
+ hasRecords = false ;
676
+ }
677
+ }
678
+ assertThat (sampleEntities .size (), is (equalTo (30 )));
679
+ }
680
+
650
681
@ Test
651
- public void shouldReturnResultsWithScanAndScroll () {
682
+ public void shouldReturnResultsWithScanAndScrollForGivenSearchQuery () {
652
683
//given
653
684
List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
654
685
// when
@@ -673,11 +704,60 @@ public void shouldReturnResultsWithScanAndScroll() {
673
704
assertThat (sampleEntities .size (), is (equalTo (30 )));
674
705
}
675
706
707
+ /*
708
+ DATAES-167
709
+ */
710
+ @ Test
711
+ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForCriteriaCriteria () {
712
+ //given
713
+ List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
714
+ // when
715
+ elasticsearchTemplate .bulkIndex (entities );
716
+ elasticsearchTemplate .refresh (SampleEntity .class , true );
717
+ // then
718
+
719
+ CriteriaQuery criteriaQuery = new CriteriaQuery (new Criteria ());
720
+ criteriaQuery .addIndices (INDEX_NAME );
721
+ criteriaQuery .addTypes (TYPE_NAME );
722
+ criteriaQuery .addFields ("message" );
723
+ criteriaQuery .setPageable (new PageRequest (0 , 10 ));
724
+
725
+ String scrollId = elasticsearchTemplate .scan (criteriaQuery , 5000 , false );
726
+ List <SampleEntity > sampleEntities = new ArrayList <SampleEntity >();
727
+ boolean hasRecords = true ;
728
+ while (hasRecords ) {
729
+ Page <SampleEntity > page = elasticsearchTemplate .scroll (scrollId , 5000L , new SearchResultMapper () {
730
+ @ Override
731
+ public <T > FacetedPage <T > mapResults (SearchResponse response , Class <T > clazz , Pageable pageable ) {
732
+ List <SampleEntity > result = new ArrayList <SampleEntity >();
733
+ for (SearchHit searchHit : response .getHits ()) {
734
+ String message = searchHit .getFields ().get ("message" ).getValue ();
735
+ SampleEntity sampleEntity = new SampleEntity ();
736
+ sampleEntity .setId (searchHit .getId ());
737
+ sampleEntity .setMessage (message );
738
+ result .add (sampleEntity );
739
+ }
740
+
741
+ if (result .size () > 0 ) {
742
+ return new FacetedPageImpl <T >((List <T >) result );
743
+ }
744
+ return null ;
745
+ }
746
+ });
747
+ if (page != null ) {
748
+ sampleEntities .addAll (page .getContent ());
749
+ } else {
750
+ hasRecords = false ;
751
+ }
752
+ }
753
+ assertThat (sampleEntities .size (), is (equalTo (30 )));
754
+ }
755
+
676
756
/*
677
757
DATAES-84
678
758
*/
679
759
@ Test
680
- public void shouldReturnResultsWithScanAndScrollForSpecifiedFields () {
760
+ public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForSearchCriteria () {
681
761
//given
682
762
List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
683
763
// when
@@ -723,8 +803,57 @@ public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pa
723
803
assertThat (sampleEntities .size (), is (equalTo (30 )));
724
804
}
725
805
806
+ /*
807
+ DATAES-167
808
+ */
809
+ @ Test
810
+ public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenCriteriaQuery () {
811
+ //given
812
+ List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
813
+ // when
814
+ elasticsearchTemplate .bulkIndex (entities );
815
+ elasticsearchTemplate .refresh (SampleEntity .class , true );
816
+ // then
817
+
818
+ CriteriaQuery criteriaQuery = new CriteriaQuery (new Criteria ());
819
+ criteriaQuery .addIndices (INDEX_NAME );
820
+ criteriaQuery .addTypes (TYPE_NAME );
821
+ criteriaQuery .setPageable (new PageRequest (0 , 10 ));
822
+
823
+ String scrollId = elasticsearchTemplate .scan (criteriaQuery , 1000 , false );
824
+ List <SampleEntity > sampleEntities = new ArrayList <SampleEntity >();
825
+ boolean hasRecords = true ;
826
+ while (hasRecords ) {
827
+ Page <SampleEntity > page = elasticsearchTemplate .scroll (scrollId , 5000L , new SearchResultMapper () {
828
+ @ Override
829
+ public <T > FacetedPage <T > mapResults (SearchResponse response , Class <T > clazz , Pageable pageable ) {
830
+ List <SampleEntity > chunk = new ArrayList <SampleEntity >();
831
+ for (SearchHit searchHit : response .getHits ()) {
832
+ if (response .getHits ().getHits ().length <= 0 ) {
833
+ return null ;
834
+ }
835
+ SampleEntity user = new SampleEntity ();
836
+ user .setId (searchHit .getId ());
837
+ user .setMessage ((String ) searchHit .getSource ().get ("message" ));
838
+ chunk .add (user );
839
+ }
840
+ if (chunk .size () > 0 ) {
841
+ return new FacetedPageImpl <T >((List <T >) chunk );
842
+ }
843
+ return null ;
844
+ }
845
+ });
846
+ if (page != null ) {
847
+ sampleEntities .addAll (page .getContent ());
848
+ } else {
849
+ hasRecords = false ;
850
+ }
851
+ }
852
+ assertThat (sampleEntities .size (), is (equalTo (30 )));
853
+ }
854
+
726
855
@ Test
727
- public void shouldReturnResultsForScanAndScrollWithCustomResultMapper () {
856
+ public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenSearchQuery () {
728
857
//given
729
858
List <IndexQuery > entities = createSampleEntitiesWithMessage ("Test message" , 30 );
730
859
// when
0 commit comments