@@ -513,31 +513,14 @@ private <T> CloseableIterator<T> doStream(long scrollTimeInMillis, ScrolledPage<
513
513
}
514
514
515
515
@ Override
516
- public <T > long count (CriteriaQuery criteriaQuery , Class <T > clazz ) {
517
- QueryBuilder elasticsearchQuery = new CriteriaQueryProcessor ().createQueryFromCriteria (criteriaQuery .getCriteria ());
518
- QueryBuilder elasticsearchFilter = new CriteriaFilterProcessor ()
519
- .createFilterFromCriteria (criteriaQuery .getCriteria ());
520
-
521
- if (elasticsearchFilter == null ) {
522
- return doCount (prepareCount (criteriaQuery , clazz ), elasticsearchQuery );
523
- } else {
524
- // filter could not be set into CountRequestBuilder, convert request into search request
525
- return doCount (prepareSearch (criteriaQuery , clazz ), elasticsearchQuery , elasticsearchFilter );
526
- }
527
- }
516
+ public <T > long count (Query query , Class <T > clazz ) {
517
+ SearchRequest searchRequest = mapQuery (query , clazz );
518
+ searchRequest .source ().size (0 );
528
519
529
- @ Override
530
- public <T > long count (SearchQuery searchQuery , Class <T > clazz ) {
531
- QueryBuilder elasticsearchQuery = searchQuery .getQuery ();
532
- QueryBuilder elasticsearchFilter = searchQuery .getFilter ();
533
-
534
- if (elasticsearchFilter == null ) {
535
- // return doCount(prepareCount(searchQuery, clazz),
536
- // elasticsearchQuery);
537
- return doCount (prepareSearch (searchQuery , clazz ), elasticsearchQuery , elasticsearchFilter );
538
- } else {
539
- // filter could not be set into CountRequestBuilder, convert request into search request
540
- return doCount (prepareSearch (searchQuery , clazz ), elasticsearchQuery , elasticsearchFilter );
520
+ try {
521
+ return SearchHitsUtil .getTotalCount (client .search (searchRequest , RequestOptions .DEFAULT ).getHits ());
522
+ } catch (IOException e ) {
523
+ throw new ElasticsearchException ("Error for search request: " + searchRequest .toString (), e );
541
524
}
542
525
}
543
526
@@ -559,55 +542,17 @@ private <T> SearchRequest mapQuery(Query query, Class<T> clazz) {
559
542
560
543
SearchRequest searchRequest = prepareSearch (query , clazz );
561
544
562
- return searchRequest ;
563
- }
564
-
565
- private long doCount (SearchRequest countRequest , QueryBuilder elasticsearchQuery ) {
566
- SearchSourceBuilder sourceBuilder = new SearchSourceBuilder ();
567
- if (elasticsearchQuery != null ) {
568
- sourceBuilder .query (elasticsearchQuery );
569
- }
570
- countRequest .source (sourceBuilder );
571
-
572
- try {
573
- return SearchHitsUtil .getTotalCount (client .search (countRequest , RequestOptions .DEFAULT ).getHits ());
574
- } catch (IOException e ) {
575
- throw new ElasticsearchException ("Error while searching for request: " + countRequest .toString (), e );
576
- }
577
- }
578
-
579
- private long doCount (SearchRequest searchRequest , QueryBuilder elasticsearchQuery , QueryBuilder elasticsearchFilter ) {
580
545
if (elasticsearchQuery != null ) {
581
546
searchRequest .source ().query (elasticsearchQuery );
582
547
} else {
583
548
searchRequest .source ().query (QueryBuilders .matchAllQuery ());
584
549
}
550
+
585
551
if (elasticsearchFilter != null ) {
586
552
searchRequest .source ().postFilter (elasticsearchFilter );
587
553
}
588
554
589
- try {
590
- return SearchHitsUtil .getTotalCount (client .search (searchRequest , RequestOptions .DEFAULT ).getHits ());
591
- } catch (IOException e ) {
592
- throw new ElasticsearchException ("Error for search request: " + searchRequest .toString (), e );
593
- }
594
- }
595
-
596
- private <T > SearchRequest prepareCount (Query query , Class <T > clazz ) {
597
- String [] indexName = !isEmpty (query .getIndices ())
598
- ? query .getIndices ().toArray (new String [query .getIndices ().size ()])
599
- : retrieveIndexNameFromPersistentEntity (clazz );
600
- String [] types = !isEmpty (query .getTypes ()) ? query .getTypes ().toArray (new String [query .getTypes ().size ()])
601
- : retrieveTypeFromPersistentEntity (clazz );
602
-
603
- Assert .notNull (indexName , "No index defined for Query" );
604
-
605
- SearchRequest countRequestBuilder = new SearchRequest (indexName );
606
-
607
- if (types != null ) {
608
- countRequestBuilder .types (types );
609
- }
610
- return countRequestBuilder ;
555
+ return searchRequest ;
611
556
}
612
557
613
558
@ Override
@@ -1258,6 +1203,7 @@ private <T> SearchRequest prepareSearch(SearchQuery query, Class<T> clazz) {
1258
1203
1259
1204
private SearchRequest prepareSearch (Query query , Optional <QueryBuilder > builder , @ Nullable Class <?> clazz ) {
1260
1205
Assert .notNull (query .getIndices (), "No index defined for Query" );
1206
+ Assert .notEmpty (query .getIndices (), "No index defined for Query" );
1261
1207
Assert .notNull (query .getTypes (), "No type defined for Query" );
1262
1208
1263
1209
int startRecord = 0 ;
0 commit comments