@@ -494,6 +494,106 @@ public void shouldSortResultsGivenMultipleSortCriteria() {
494
494
assertThat (sampleEntities .getContent ().get (1 ).getMessage (), is (sampleEntity1 .getMessage ()));
495
495
}
496
496
497
+ @ Test // DATAES-312
498
+ public void shouldSortResultsGivenNullFirstSortCriteria () {
499
+ // given
500
+ List <IndexQuery > indexQueries ;
501
+
502
+ // first document
503
+ String documentId = randomNumeric (5 );
504
+ SampleEntity sampleEntity1 = SampleEntity .builder ()
505
+ .id (documentId )
506
+ .message ("abc" )
507
+ .rate (15 )
508
+ .version (System .currentTimeMillis ())
509
+ .build ();
510
+
511
+ // second document
512
+ String documentId2 = randomNumeric (5 );
513
+ SampleEntity sampleEntity2 = SampleEntity .builder ()
514
+ .id (documentId2 )
515
+ .message ("xyz" )
516
+ .rate (5 )
517
+ .version (System .currentTimeMillis ())
518
+ .build ();
519
+
520
+ // third document
521
+ String documentId3 = randomNumeric (5 );
522
+ SampleEntity sampleEntity3 = SampleEntity .builder ()
523
+ .id (documentId3 )
524
+ .rate (10 )
525
+ .version (System .currentTimeMillis ())
526
+ .build ();
527
+
528
+ indexQueries = getIndexQueries (Arrays .asList (sampleEntity1 , sampleEntity2 , sampleEntity3 ));
529
+
530
+ elasticsearchTemplate .bulkIndex (indexQueries );
531
+ elasticsearchTemplate .refresh (SampleEntity .class );
532
+
533
+ SearchQuery searchQuery = new NativeSearchQueryBuilder ()
534
+ .withQuery (matchAllQuery ())
535
+ .withPageable (PageRequest .of (0 , 10 , Sort .by (Sort .Order .asc ("message" ).nullsFirst ())))
536
+ .build ();
537
+
538
+ // when
539
+ Page <SampleEntity > sampleEntities = elasticsearchTemplate .queryForPage (searchQuery , SampleEntity .class );
540
+
541
+ // then
542
+ assertThat (sampleEntities .getTotalElements (), equalTo (3L ));
543
+ assertThat (sampleEntities .getContent ().get (0 ).getRate (), is (sampleEntity3 .getRate ()));
544
+ assertThat (sampleEntities .getContent ().get (1 ).getMessage (), is (sampleEntity1 .getMessage ()));
545
+ }
546
+
547
+ @ Test // DATAES-312
548
+ public void shouldSortResultsGivenNullLastSortCriteria () {
549
+ // given
550
+ List <IndexQuery > indexQueries ;
551
+
552
+ // first document
553
+ String documentId = randomNumeric (5 );
554
+ SampleEntity sampleEntity1 = SampleEntity .builder ()
555
+ .id (documentId )
556
+ .message ("abc" )
557
+ .rate (15 )
558
+ .version (System .currentTimeMillis ())
559
+ .build ();
560
+
561
+ // second document
562
+ String documentId2 = randomNumeric (5 );
563
+ SampleEntity sampleEntity2 = SampleEntity .builder ()
564
+ .id (documentId2 )
565
+ .message ("xyz" )
566
+ .rate (5 )
567
+ .version (System .currentTimeMillis ())
568
+ .build ();
569
+
570
+ // third document
571
+ String documentId3 = randomNumeric (5 );
572
+ SampleEntity sampleEntity3 = SampleEntity .builder ()
573
+ .id (documentId3 )
574
+ .rate (10 )
575
+ .version (System .currentTimeMillis ())
576
+ .build ();
577
+
578
+ indexQueries = getIndexQueries (Arrays .asList (sampleEntity1 , sampleEntity2 , sampleEntity3 ));
579
+
580
+ elasticsearchTemplate .bulkIndex (indexQueries );
581
+ elasticsearchTemplate .refresh (SampleEntity .class );
582
+
583
+ SearchQuery searchQuery = new NativeSearchQueryBuilder ()
584
+ .withQuery (matchAllQuery ())
585
+ .withPageable (PageRequest .of (0 , 10 , Sort .by (Sort .Order .asc ("message" ).nullsLast ())))
586
+ .build ();
587
+
588
+ // when
589
+ Page <SampleEntity > sampleEntities = elasticsearchTemplate .queryForPage (searchQuery , SampleEntity .class );
590
+
591
+ // then
592
+ assertThat (sampleEntities .getTotalElements (), equalTo (3L ));
593
+ assertThat (sampleEntities .getContent ().get (0 ).getRate (), is (sampleEntity1 .getRate ()));
594
+ assertThat (sampleEntities .getContent ().get (1 ).getMessage (), is (sampleEntity2 .getMessage ()));
595
+ }
596
+
497
597
@ Test
498
598
public void shouldExecuteStringQuery () {
499
599
// given
@@ -2100,4 +2200,4 @@ class ResultAggregator {
2100
2200
this .lastName = lastName ;
2101
2201
}
2102
2202
}
2103
- }
2203
+ }
0 commit comments