@@ -681,6 +681,7 @@ private List<MultiGetRequest.Item> getMultiRequestItems(Query searchQuery, Class
681
681
item = item .routing (searchQuery .getRoute ());
682
682
}
683
683
684
+ // note: multiGet does not have fields, need to set sourceContext to filter
684
685
if (fetchSourceContext != null ) {
685
686
item .fetchSourceContext (fetchSourceContext );
686
687
}
@@ -929,11 +930,6 @@ private SearchRequest prepareSearchRequest(Query query, @Nullable Class<?> clazz
929
930
sourceBuilder .seqNoAndPrimaryTerm (true );
930
931
}
931
932
932
- if (query .getSourceFilter () != null ) {
933
- SourceFilter sourceFilter = query .getSourceFilter ();
934
- sourceBuilder .fetchSource (sourceFilter .getIncludes (), sourceFilter .getExcludes ());
935
- }
936
-
937
933
if (query .getPageable ().isPaged ()) {
938
934
sourceBuilder .from ((int ) query .getPageable ().getOffset ());
939
935
sourceBuilder .size (query .getPageable ().getPageSize ());
@@ -942,8 +938,14 @@ private SearchRequest prepareSearchRequest(Query query, @Nullable Class<?> clazz
942
938
sourceBuilder .size (INDEX_MAX_RESULT_WINDOW );
943
939
}
944
940
941
+ if (query .getSourceFilter () != null ) {
942
+ sourceBuilder .fetchSource (getFetchSourceContext (query ));
943
+ SourceFilter sourceFilter = query .getSourceFilter ();
944
+ sourceBuilder .fetchSource (sourceFilter .getIncludes (), sourceFilter .getExcludes ());
945
+ }
946
+
945
947
if (!query .getFields ().isEmpty ()) {
946
- sourceBuilder . fetchSource ( query .getFields ().toArray ( new String [ 0 ]), null );
948
+ query .getFields ().forEach ( sourceBuilder :: fetchField );
947
949
}
948
950
949
951
if (query .getIndicesOptions () != null ) {
@@ -1023,11 +1025,6 @@ private SearchRequestBuilder prepareSearchRequestBuilder(Query query, Client cli
1023
1025
searchRequestBuilder .seqNoAndPrimaryTerm (true );
1024
1026
}
1025
1027
1026
- if (query .getSourceFilter () != null ) {
1027
- SourceFilter sourceFilter = query .getSourceFilter ();
1028
- searchRequestBuilder .setFetchSource (sourceFilter .getIncludes (), sourceFilter .getExcludes ());
1029
- }
1030
-
1031
1028
if (query .getPageable ().isPaged ()) {
1032
1029
searchRequestBuilder .setFrom ((int ) query .getPageable ().getOffset ());
1033
1030
searchRequestBuilder .setSize (query .getPageable ().getPageSize ());
@@ -1036,8 +1033,13 @@ private SearchRequestBuilder prepareSearchRequestBuilder(Query query, Client cli
1036
1033
searchRequestBuilder .setSize (INDEX_MAX_RESULT_WINDOW );
1037
1034
}
1038
1035
1036
+ if (query .getSourceFilter () != null ) {
1037
+ SourceFilter sourceFilter = query .getSourceFilter ();
1038
+ searchRequestBuilder .setFetchSource (sourceFilter .getIncludes (), sourceFilter .getExcludes ());
1039
+ }
1040
+
1039
1041
if (!query .getFields ().isEmpty ()) {
1040
- searchRequestBuilder . setFetchSource ( query .getFields ().toArray ( new String [ 0 ]), null );
1042
+ query .getFields ().forEach ( searchRequestBuilder :: addFetchField );
1041
1043
}
1042
1044
1043
1045
if (query .getIndicesOptions () != null ) {
@@ -1599,24 +1601,16 @@ public static WriteRequest.RefreshPolicy toElasticsearchRefreshPolicy(RefreshPol
1599
1601
}
1600
1602
}
1601
1603
1604
+ @ Nullable
1602
1605
private FetchSourceContext getFetchSourceContext (Query searchQuery ) {
1603
- FetchSourceContext fetchSourceContext = null ;
1604
- SourceFilter sourceFilter = searchQuery .getSourceFilter ();
1605
1606
1606
- if (!isEmpty (searchQuery .getFields ())) {
1607
- if (sourceFilter == null ) {
1608
- sourceFilter = new FetchSourceFilter (toArray (searchQuery .getFields ()), null );
1609
- } else {
1610
- ArrayList <String > arrayList = new ArrayList <>();
1611
- Collections .addAll (arrayList , sourceFilter .getIncludes ());
1612
- sourceFilter = new FetchSourceFilter (toArray (arrayList ), null );
1613
- }
1607
+ SourceFilter sourceFilter = searchQuery .getSourceFilter ();
1614
1608
1615
- fetchSourceContext = new FetchSourceContext (true , sourceFilter .getIncludes (), sourceFilter .getExcludes ());
1616
- } else if (sourceFilter != null ) {
1617
- fetchSourceContext = new FetchSourceContext (true , sourceFilter .getIncludes (), sourceFilter .getExcludes ());
1609
+ if (sourceFilter != null ) {
1610
+ return new FetchSourceContext (true , sourceFilter .getIncludes (), sourceFilter .getExcludes ());
1618
1611
}
1619
- return fetchSourceContext ;
1612
+
1613
+ return null ;
1620
1614
}
1621
1615
1622
1616
// endregion
0 commit comments